Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL DOVE LIKE non funziona con più campi utilizzando php e pdo bind

Il problema è probabilmente che $this->phone è vuoto quando esegui la query.

In tal caso, la query sarà SELECT * FROM [...] OR WHERE phone LIKE '%%' che restituirà sempre tutto.

Soluzione:tralasciare i criteri del telefono se non forniti o (avviso di hacking! ) utilizza un valore che non si verificherà mai in quella colonna.

Un altro modo per farlo è cambiare la query in qualcosa di simile a

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

E poi vincola :phone_provided a 1 se $this->phone è definito, 0 altrimenti. Allo stesso modo con :name_provided .