sql >> Base de Datos >  >> RDS >> Mysql

MySQL DONDE COMO no funciona con múltiples campos usando php y pdo bind

El problema es probablemente que $this->phone está vacío cuando ejecuta la consulta.

En ese caso, la consulta será SELECT * FROM [...] OR WHERE phone LIKE '%%' que siempre devolverá todo.

Solución:omita los criterios del teléfono si no se proporcionan o (¡alerta de pirateo! ) use un valor que nunca aparecerá en esa columna.

Otra forma de hacer esto es cambiar la consulta a algo como

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

Y luego enlazar :phone_provided a 1 si $this->phone está definido, 0 en caso contrario. Del mismo modo con :name_provided .