Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL WHERE LIKE ne fonctionne pas avec plusieurs champs en utilisant php et pdo bind

Le problème est probablement que $this->phone est vide lorsque vous exécutez la requête.

Dans ce cas, la requête sera SELECT * FROM [...] OR WHERE phone LIKE '%%' qui renverra toujours tout.

Solution :omettez les critères de téléphone s'ils ne sont pas fournis ou (alerte de piratage ! ) utilisez une valeur qui n'apparaîtra jamais dans cette colonne.

Une autre façon de faire est de changer la requête en quelque chose comme

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

Et puis liez :phone_provided à 1 si $this->phone est défini, 0 sinon. De même avec :name_provided .