ワイルドカードをサポートする 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 サイトの他の関連記事を参照してください。