sql >> Databasteknik >  >> RDS >> Mysql

MySQL WHERE LIKE fungerar inte med flera fält med php och pdo bind

Problemet är förmodligen att $this->phone är tom när du kör frågan.

I så fall blir frågan SELECT * FROM [...] OR WHERE phone LIKE '%%' som alltid kommer att returnera allt.

Lösning:utelämna telefonkriterierna om de inte tillhandahålls eller (hack alert! ) använd ett värde som aldrig kommer att förekomma i den kolumnen.

Ett annat sätt att göra detta är att ändra frågan till något liknande

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

Och bind sedan :phone_provided till 1 om $this->phone definieras, annars 0. Likaså med :name_provided .




  1. date_trunc 5 minuters intervall i PostgreSQL

  2. Ändra MySQL-drivrutinen som används av Joomla

  3. Hur man uppdaterar en kolumn baserat på ett filter i en annan kolumn

  4. Hur man stänger av mysql-fel från att visas på skärmen i CodeIgniter