ホームページ > データベース > mysql チュートリアル > MySQL PDO クエリで「LIKE」を使用すると「bindParam」が失敗するのはなぜですか?

MySQL PDO クエリで「LIKE」を使用すると「bindParam」が失敗するのはなぜですか?

Susan Sarandon
リリース: 2024-11-13 10:36:02
オリジナル
238 人が閲覧しました

Why Does `bindParam` Fail When Using `LIKE` in MySQL PDO Queries?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート