Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL WHERE LIKE не работи с множество полета, използвайки php и pdo bind

Проблемът вероятно е, че $this->phone е празен, когато стартирате заявката.

В този случай заявката ще бъде SELECT * FROM [...] OR WHERE phone LIKE '%%' който винаги ще връща всичко.

Решение:пропуснете критериите за телефон, ако не са предоставени или (предупреждение за хакване! ) използвайте стойност, която никога няма да се появи в тази колона.

Друг начин да направите това е да промените заявката на нещо като

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

И след това свържете :phone_provided до 1, ако $this->phone е дефиниран, 0 в противен случай. По същия начин с :name_provided .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Правене на ред неактивен в MySQL

  2. Как да инсталирате MySQL 8.0 на CentOS 8 / RHEL 8

  3. MySQL:Код на грешка:1118 Размерът на ред е твърде голям (> 8126). Промяна на някои колони на TEXT или BLOB

  4. Обновяване на PHP страница за всяка предварително зададена секунда

  5. Как да конвертирате часовата зона в MySQL