PHP PDO Prepared Statement mit MySQL LIKE-Abfrage
Dieser Artikel befasst sich mit dem Problem der Verwendung der PDO-Klasse (MySQL-Treiber) von PHP zur Durchführung eines LIKE Abfrage mit einer MySQL-Datenbank.
Das Problem tritt auf, wenn versucht wird, LIKE mit vorbereiteten Anweisungen zu verwenden, da sich die in der PDO-Methode „execute()“ verwendete Syntax von der des MySQL-Clients unterscheidet.
Die falsche Syntax :
<code class="php">$ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"'));</code>
fügt unnötige doppelte Anführungszeichen hinzu, was zu falschen Ergebnissen führt.
Ebenso ist diese Syntax auch falsch:
<code class="php">$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));</code>
da es an zusätzlicher Syntax mangelt, die für benötigt wird Vorbereitete Anweisungen.
Die korrekte Syntax zum Ausführen einer LIKE-Abfrage mit einer PDO-vorbereiteten Anweisung lautet:
<code class="php">$prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));</code>
Vorbereitete Anweisungen bieten einen Vorteil gegenüber der Zeichenfolgenverkettung, da sie vor SQL-Injection schützen. Sie behandeln Werte als von der Abfrage getrennte Einheiten, sodass keine umständliche Verkettung erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie führe ich eine LIKE-Abfrage mit PDO-vorbereiteten Anweisungen in PHP aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!