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 mit PDO:
SELECT *
FROM hs
WHERE hs_text LIKE "%searchTerm%"
Benutzer stellen möglicherweise fest, dass keine Ergebnisse zurückgegeben werden.
Lösung: Korrekte Parametrisierung
Das Problem liegt in der falsche Parametrisierung des Suchbegriffs. In PHP verwenden vorbereitete Anweisungen benannte Platzhalter, die eine andere Syntax erfordern. Die korrekte Parametrisierung für die LIKE-Abfrage lautet:
$prep = $dbh->prepare($sql);
$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));
Erläuterung:
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:
WHERE hs_text LIKE :searchTerm
$ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"')); // Incorrect
WHERE hs_text LIKE CONCAT(\'%\', ?, \'%\')
$ret = $prep->execute(array($searchTerm)); // Incorrect
Durch die Verwendung der richtigen Parametrisierung können Sie LIKE-Abfragen erfolgreich ausführen PDO-vorbereitete Anweisungen in PHP.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3