Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL WHERE LIKE funktioniert nicht mit mehreren Feldern mit php und pdo bind

Das Problem ist wahrscheinlich das $this->phone ist leer, wenn Sie die Abfrage ausführen.

In diesem Fall lautet die Abfrage SELECT * FROM [...] OR WHERE phone LIKE '%%' die immer alles zurückgibt.

Lösung:Lassen Sie die Telefonkriterien weg, falls nicht vorhanden, oder (Hack-Alarm! ) einen Wert verwenden, der niemals in dieser Spalte vorkommt.

Eine andere Möglichkeit, dies zu tun, besteht darin, die Abfrage in etwas wie

zu ändern
SELECT *
  FROM directory
 WHERE name LIKE :name 
   AND :name_provided = 1
    OR phone LIKE :phone
   AND :phone_provided = 1

Und binden Sie dann :phone_provided auf 1, wenn $this->phone definiert ist, sonst 0. Ebenso mit :name_provided .