Mailinglisten-Archive |
Hallo Martin, ich würde mal sagen es liegt am 'AND'. In SQL haben auch die Operatoren OR und AND eine Rangfolge. Und die ist AND vor OR. Das bedeutet deine Anweisung ist gleichbedeutend mit: SELECT ID, AC, Name, Ort, Zusatz1, Zusatz2 from my_table WHERE Name LIKE '%$q%' OR Ort LIKE '%$q%' OR (AC LIKE '%$q%' AND Zusatz1=='1') Man beachte die Klammern. Wenn also z.B. Ort Like '%$q%' bereits den Wert true ergibt, wird AC.. AND Zusatz1.. überhaupt nicht ausgewertet. Lösung: SELECT ID, AC, Name, Ort, Zusatz1, Zusatz2 from my_table WHERE (Name LIKE '%$q%' OR Ort LIKE '%$q%' OR AC LIKE '%$q%') AND Zusatz1=='1' Man beachte die Klammern. Uwe Liedel -----Ursprüngliche Nachricht----- Von: php-admin_(at)_php-center.de [mailto:php-admin_(at)_php-center.de]Im Auftrag von Martin Klässner Gesendet: Montag, 29. Januar 2001 19:28 An: PHP Mailinglist Betreff: [php] SELECT Hallo, kann mir jemand sagen, wieso die folgende MySQL-Abfrage nicht funktioniert ? Auch wenn Zusatz 1 nicht 1 ist, wird der Datensatz ausgegeben. Ziel ist es, spezielle Eigenschaften nochmals zu definieren und dann direkt in die MySQL-Abfrage zu integrieren. ---- $aq = "SELECT ID, AC, Name, Ort, Zusatz1, Zusatz2 from my_table WHERE Name LIKE '%$q%' OR Ort LIKE '%$q%' OR AC LIKE '%$q%'"; if($Zusatz1=="1") { $aq .= " AND Zusatz1=='1'"; } if($Zusatz2=="1") { $aq .= " AND Zusatz2=='1'"; } $query = mysql_query("$aq"); $content = mysql_result($query, 0, "Name"); echo "$content <br>"; ---- Ich hoffe mir ist noch zu helfen :-) Thx ! cu Martin www.webmaster-foren.de klaessner_(at)_communtech.de -- ** Durchgehend geöffnet: http://www.php-center.de ** Die PHP-Liste: mailto:php_(at)_php-center.de http://infosoc.uni-koeln.de/mailman/listinfo/php
php::bar PHP Wiki - Listenarchive