Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
[MySQL 4.0] Abfrage mit LIKE ??? HILFE! [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[MySQL 4.0] Abfrage mit LIKE ??? HILFE!


 
rantanplan1111
18-04-2006, 22:40 
 
Hallo,

ich habe folgendes Problem:

Ich habe eine Tabelle(z.B.: benutzer), in welcher alle Benutzer mit ihrem Alter eingetragen sind. z.B.: user->Al alterdb->25
Desweiteren habe ich eine Ergebnismenge in einer Variable. z.B.: $alter="24,25,26";
Wie kann ich meine DB abfragen, dass ich alle Benutzer bekomme, die somit 24, 25 und 26 Jahre alt sind? Ich kann die Variable auch nicht in Einzelteile zerlegen, weil es hier zu viele verschiedene Möglichkeiten gäbe und die Abfragen dann zu lange dauern würden. Ich bräuchte das in einer Datenbankabfrage.

Umgekehrt wüsste ich, wie es geht, wäre dann:
...SELECT user FROM benutzer WHERE alterdb like '%$alter%'")
Dabei wäre allerdings $alter ein Teil von alterdb, ich benötige aber bei diesem Fall genau das Gegenteil. Ich hoffe, dass war einigermassen verständlich...Irgendwie komm ich hier nicht weiter. Brauche ganz dringend HILFE!!!

Danke schon mal.
rantanplan

 
jahlives
18-04-2006, 22:58 
 
$alter z.B. mittels explode in ein Array überführen. Dann eine Abfrage an die DB à la (mit oder Operator)

$alter = explode(',',$alter);
$query = "Select * from table where alter='$alter[0]' || alter='$alter[1]';";

Weiteres dazu unter http://dev.mysql.com/doc/refman/4.1/en/logical-operators.html

Gruss

tobi

p.s.

$query = "Select * from table where";
for(i=0;i<count($alter);i+=1){
if($i == 0){
$query .= " alter='$alter[$i]'";
}else{
$query .= " || alter='$alter[$i]'";
}
}
$query .= ";";

Das würde noch helfen falls du nicht weisst wieviele verschiedene Alter du hast ;)

 
rantanplan1111
18-04-2006, 23:03 
 
Macht er dann nicht zu jedem $alter[] eine eigene Abfrage an meine DB? Das wollte ich ja eigentlich vermeiden...

 
TobiaZ
18-04-2006, 23:09 
 
natürlich nicht. du sendest doch nur eine anfrage an die db. 1 query = 1 anfrage.


@jah: du wolltest tatsächlich IN() verschweigen?

 
jahlives
18-04-2006, 23:14 
 
Kannte ich nicht *schämundindieEckestell* Ist ja voll perfekt für diesen Zweck :D
Und wieder war gelernt

Gruss

tobi

 
rantanplan1111
18-04-2006, 23:18 
 
Was is denn IN() ???

 
TobiaZ
18-04-2006, 23:25 
 
Hmm, jahlives kannte es auch nicht, hat aber selbstständig gesucht. das wäre mal ein ansatz, oder?

 
rantanplan1111
18-04-2006, 23:31 
 
hmmm, in der Tat, gute Idee, werd mal suchen...danke schon mal!

 
rantanplan1111
19-04-2006, 00:04 
 
Mann, mann...wo kuckt Ihr denn da??? Finde nix dazu, hmm...wie wäre es, postet doch einfach die syntax und ich probier´s einfach selbst aus...hab wirklich rumgesucht wie ein Irrer.
Wie lautet denn die syntax?

...WHERE alterdb IN '$alter'") ???

 
extr3m0
19-04-2006, 01:59 
 
...WHERE alterdb IN ('25', '26', '27')

$alter="('" . replace(",", "','", $alter) . "')";

 
rantanplan1111
19-04-2006, 22:18 
 
Wahnsinn, sehr geil, danke!!! Das war´s! Musste nur statt replace ->str_replace verwenden...und schon hat´s funktioniert!

Danke nochmal allen, die mir geholfen haben!!! War gigantisch!!!

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:25 Uhr.