MySQL PDO クエリで bindingParam を使用する場合の LIKE 構文の修正
MySQL PDO クエリでは、bindParam で LIKE を使用するのは難しい場合があります。この質問は、特定の文字列で始まるユーザー名を照合しようとするときに直面する一般的な問題を示しています。
質問で提供されている誤った構文では、$term 変数の内側の一重引用符が使用されています。
$term = "'$term%'";
これを修正するには、内側の一重引用符を削除するだけです:
$term = "$term%";
bindParam を使用する場合、PDO は文字列を自動的に処理します。引用します。 $term 変数内に不要な引用符を追加すると、間違った LIKE マッチングが行われる可能性があります。
修正されたステートメントは次のようになります。
$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();
これにより、$term 変数で始まるユーザー名が正しく一致します。 、たとえば「a」。
以上がMySQL PDO クエリで「LIKE」を使用すると「bindParam」が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。