phpbar.de logo

Mailinglisten-Archive

[php] AW: [php] SELECT

[php] AW: [php] SELECT

Uwe Liedel liedel_(at)_frankenpost.de
Tue, 30 Jan 2001 08:58:21 +0100


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