ホームページ  >  記事  >  バックエンド開発  >  PDO プリペアド ステートメントでワイルドカードを使用する方法: よくある落とし穴を回避するためのガイド

PDO プリペアド ステートメントでワイルドカードを使用する方法: よくある落とし穴を回避するためのガイド

DDD
DDDオリジナル
2024-10-28 13:52:01172ブラウズ

How to Use Wildcards with PDO Prepared Statements: A Guide to Avoiding Common Pitfalls?

ワイルドカードをサポートする PDO プリペアド ステートメント

プリペアド ステートメントは、SQL インジェクション攻撃を防止することで、データベース クエリのセキュリティとパフォーマンスを向上させます。ただし、プリペアド ステートメントでワイルドカードを使用すると、問題が発生する可能性があります。

あなたの場合、次のようなクエリを実行しようとしました。

<code class="sql">SELECT * FROM `gc_users` WHERE `name` LIKE '%anyname%'</code>

パラメータを '%:name にバインドしようとしました。 %' メソッドと ':name' メソッドですが、どちらも失敗しました。プリペアド ステートメントでワイルドカードを使用する方法は次のとおりです。

bindValue の使用:

bindValue を使用して、ワイルドカード パラメーターを正しくバインドできます:

<code class="php">$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name");
$stmt->bindValue(':name', '%' . $name . '%');
$stmt->execute();</code>

bindParam の使用 (変更):

さらに、少し変更を加えてbindParam を使用することもできます:

<code class="php">$name = "%$name%";
$query = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` like :name");
$query->bindParam(':name', $name);
$query->execute();</code>

以上がPDO プリペアド ステートメントでワイルドカードを使用する方法: よくある落とし穴を回避するためのガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。