Korrektur der LIKE-Syntax bei Verwendung von bindParam für MySQL-PDO-Abfragen
Bei MySQL-PDO-Abfragen kann die Verwendung von LIKE mit bindParam schwierig sein. Diese Frage zeigt ein häufiges Problem beim Versuch, Benutzernamen zu finden, die mit einer bestimmten Zeichenfolge beginnen.
Die in der Frage angegebene falsche Syntax verwendet innere einfache Anführungszeichen um die Variable $term:
$term = "'$term%'";
Um dies zu beheben, entfernen Sie einfach die inneren einfachen Anführungszeichen:
$term = "$term%";
Bei Verwendung von bindParam verarbeitet PDO automatisch die Zeichenfolgen-Anführungszeichen. Das Hinzufügen unnötiger Anführungszeichen innerhalb der Variablen $term kann zu falschen LIKE-Übereinstimmungen führen.
Die korrigierte Anweisung sollte wie folgt aussehen:
$sql = "SELECT username FROM `user` WHERE username LIKE :term LIMIT 10"; $core = Connect::getInstance(); $stmt = $core->dbh->prepare($sql); $stmt->bindParam(':term', $term, PDO::PARAM_STR); $stmt->execute(); $data = $stmt->fetchAll();
Dadurch werden Benutzernamen korrekt abgeglichen, die mit der Variablen $term beginnen , zum Beispiel „a“.
Das obige ist der detaillierte Inhalt vonWarum schlägt „bindParam' fehl, wenn „LIKE' in MySQL-PDO-Abfragen verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!