PHP PDO Prepared Statement – MySQL LIKE Query
PDO Prepared Statements bieten eine sichere und effiziente Möglichkeit, SQL-Abfragen mit dynamischen Parametern auszuführen. Bei der Arbeit mit MySQL-LIKE-Abfragen ist die Verwendung der richtigen Syntax von entscheidender Bedeutung.
Frage:
Trotzdem steht ein Entwickler bei der Ausführung einer MySQL-LIKE-Abfrage mit PDO in PHP vor Herausforderungen Die Abfrage funktioniert im MySQL-Client ordnungsgemäß. Der Code gibt keine Ergebnisse zurück und verschiedene Syntaxvarianten wurden erfolglos ausprobiert.
Antwort:
Die falsche Syntax im Code liegt in den Anweisungen „prepare“ und „execute“. . Das Problem ist die unnötige Verwendung doppelter Anführungszeichen und die falsche Parameterbindung. Hier ist der korrigierte Code:
$sql = 'SELECT hs.hs_pk, hs.hs_text, hs.hs_did, hd.hd_did, hd.hd_text, hv.hv_text, hc.hc_text FROM hs LEFT JOIN hd ON hs.hs_did = hd.hd_did LEFT JOIN hd ON hd.hd_vid = hv.hv_id LEFT JOIN hc ON hd.hd_pclass = hc.hc_id WHERE hs.hs_text LIKE :searchTerm LIMIT 25'; $prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));
Erklärung:
Vorbereitete Anweisungen funktionieren, indem sie die Abfrage an die Datenbank senden, ohne dass darin Parameterwerte eingebettet sind. Die Parameter werden separat gesendet, um von der Datenbank-Engine gebunden zu werden. Das Hinzufügen doppelter Anführungszeichen zum Parameterwert in der Ausführungsanweisung ist falsch, da PDO den Parameterwert bei Bedarf automatisch in Anführungszeichen setzt.
Zusätzlich erfordert der LIKE-Operator Prozentsätze um den Suchbegriff, um teilweise Übereinstimmungen zu ermöglichen. Im falschen Code wird der Suchbegriff fälschlicherweise durch doppelte Anführungszeichen anstelle der erforderlichen Prozentzeichen begrenzt.
Durch die Korrektur dieser Syntaxfehler kann die PDO-vorbereitete Anweisung verwendet werden, um MySQL-LIKE-Abfragen erfolgreich auszuführen.
Das obige ist der detaillierte Inhalt vonWie verwende ich PDO-vorbereitete Anweisungen für MySQL-LIKE-Abfragen in PHP korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!