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