PDO Prepared Statement in PHP: Probleme mit MySQL LIKE-Abfragen
PHPs PDO-Klasse mit MySQL bietet einen Mechanismus zum Ausführen von SQL-Anweisungen mit parametrisierten Abfragen , Verbesserung der Sicherheit und Leistung. Allerdings können Benutzer bei der Verwendung von LIKE-Abfragen auf Schwierigkeiten stoßen.
Problem: PDO Prepared Statement gibt bei LIKE-Abfrage keine Ergebnisse zurück
Beim Versuch, eine Abfrage ähnlich der folgenden auszuführen unter Verwendung von PDO:
<code class="mysql">SELECT * FROM hs WHERE hs_text LIKE "%searchTerm%"</code>
Benutzer stellen möglicherweise fest, dass keine Ergebnisse zurückgegeben werden.
Lösung: Korrekte Parametrisierung
Das Problem liegt in der falschen Parametrisierung des Suchbegriffs. In PHP verwenden vorbereitete Anweisungen benannte Platzhalter, die eine andere Syntax erfordern. Die korrekte Parametrisierung für die LIKE-Abfrage lautet:
<code class="php">$prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));</code>
Erklärung:
Vorbereitete Anweisungen trennen die Daten von der Abfrage und verwenden Platzhalter. Daher ist es nicht erforderlich, den Suchbegriff in doppelte Anführungszeichen zu setzen oder eine Zeichenfolgenverkettung durchzuführen.
Andere häufige Fehler:
<code class="php">WHERE hs_text LIKE :searchTerm $ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"')); // Incorrect</code>
<code class="php">WHERE hs_text LIKE CONCAT(\'%\', ?, \'%\') $ret = $prep->execute(array($searchTerm)); // Incorrect</code>
Durch die Verwendung von Mit der richtigen Parametrisierung können Sie LIKE-Abfragen mithilfe von PDO-vorbereiteten Anweisungen in PHP erfolgreich ausführen.
Das obige ist der detaillierte Inhalt vonWarum gibt die vorbereitete PDO-Anweisung bei der LIKE-Abfrage keine Ergebnisse zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!