Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL WHERE LUB nie działa z wieloma polami za pomocą php i pdo bind

Problem prawdopodobnie polega na tym, że $this->phone jest pusta po uruchomieniu zapytania.

W takim przypadku zapytaniem będzie SELECT * FROM [...] OR WHERE phone LIKE '%%' który zawsze zwróci wszystko.

Rozwiązanie:pomiń kryteria numeru telefonu, jeśli nie zostały podane lub (ostrzeżenie o hakowaniu! ) użyj wartości, która nigdy nie pojawi się w tej kolumnie.

Innym sposobem na to jest zmiana zapytania na coś takiego jak

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

A następnie powiąż :phone_provided na 1, jeśli $this->phone jest zdefiniowany, 0 inaczej. Podobnie z :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. Błąd adaptera szyny mysql

  2. Znajdź kombinacje spełniające kryteria z zakresu

  3. W jaki sposób mysql odwraca rozwiązywanie adresów IP?

  4. 1114 (HY000):Stół jest pełny

  5. Zwróć ostatni identyfikator (tożsamość) po wstawieniu wiersza VB.NET MySQL