„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum gibt die vorbereitete PDO-Anweisung bei der LIKE-Abfrage keine Ergebnisse zurück?

Warum gibt die vorbereitete PDO-Anweisung bei der LIKE-Abfrage keine Ergebnisse zurück?

Veröffentlicht am 03.11.2024
Durchsuche:541

Why Does PDO Prepared Statement Fail to Return Results with LIKE Query?

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
  • Dieser Ansatz ist falsch, da er unnötige doppelte Anführungszeichen hinzufügt.
WHERE hs_text LIKE CONCAT(\'%\', ?, \'%\')
$ret = $prep->execute(array($searchTerm));  // Incorrect
  • Die Verwendung von CONCAT zum Umschließen des Suchbegriffs innerhalb der Abfrage ist für die Parametrisierung nicht erforderlich.

Durch die Verwendung der richtigen Parametrisierung können Sie LIKE-Abfragen erfolgreich ausführen PDO-vorbereitete Anweisungen in PHP.

Neuestes Tutorial Mehr>

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