sql >> Database >  >> RDS >> Mysql

MySQL WHERE LIKE werkt niet met meerdere velden met behulp van php en pdo bind

Het probleem is waarschijnlijk dat $this->phone is leeg wanneer u de query uitvoert.

In dat geval is de zoekopdracht SELECT * FROM [...] OR WHERE phone LIKE '%%' die altijd alles zal teruggeven.

Oplossing:laat de telefooncriteria weg als deze niet zijn opgegeven of (hack alert! ) gebruik een waarde die nooit in die kolom zal voorkomen.

Een andere manier om dit te doen, is door de zoekopdracht te wijzigen in iets als

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

En bind dan :phone_provided naar 1 als $this->phone is gedefinieerd, anders 0. Hetzelfde geldt voor :name_provided .




  1. Toegang tot gegevens van servlet

  2. Salesforce TLS 1.0 Beëindiging

  3. Hoe Prisma te gebruiken

  4. De Optimizer in Oracle Database 19c