Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL WHERE LIKE não está funcionando com vários campos usando php e pdo bind


O problema provavelmente é que $this->phone está vazio quando você executa a consulta.

Nesse caso, a consulta será SELECT * FROM [...] OR WHERE phone LIKE '%%' que sempre retornará tudo.

Solução:deixe de fora os critérios de telefone se não forem fornecidos ou (alerta de hack! ) use um valor que nunca ocorrerá nessa coluna.

Outra maneira de fazer isso é alterar a consulta para algo como
SELECT *
  FROM directory
 WHERE name LIKE :name 
   AND :name_provided = 1
    OR phone LIKE :phone
   AND :phone_provided = 1

E então vincule :phone_provided para 1 se $this->phone é definido, 0 caso contrário. Da mesma forma com :name_provided .