ホームページ > データベース > mysql チュートリアル > SQL クエリで LIKE 値を PDO に正しくバインドするにはどうすればよいですか?

SQL クエリで LIKE 値を PDO に正しくバインドするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-09 08:49:06
オリジナル
750 人が閲覧しました

How to Correctly Bind LIKE Values with PDO in SQL Queries?

PDO を使用した LIKE 値のバインド

SQL クエリでは、パターン マッチングの比較に LIKE 演算子が使用されます。 PDO 拡張機能を使用してクエリを実行する場合、あいまいな結果を避けるために LIKE 値を正しくバインドすることが重要です。

一般的なシナリオの 1 つは、

select wrd from tablename WHERE wrd LIKE '$partial%'
ログイン後にコピー
PDO を使用してこれをバインドするには、単に $partial% を名前付きパラメータに置き換えるのが間違ったアプローチです。例:

select wrd from tablename WHERE wrd LIKE ':partial%'
ログイン後にコピー
PDO は % をワイルドカード文字として解釈しないため、これは機能せず、誤った結果が得られます。代わりに、目的の動作を実現するためのオプションがいくつかあります。

  • bindParam() で準備済みステートメントを使用する:
パラメータをバインドする部分文字列のエスケープされたバージョン。例:

$stmt = $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :partial");
$escapedPartial = $db->quote($partial . '%');
$stmt->bindParam(':partial', $escapedPartial);
ログイン後にコピー
  • CONCAT( を使用して LIKE 式を構築します:
CONCAT を使用してクエリ内で LIKE 式を動的に構築します() 関数。これにより、MySQL の最後にワイルドカード文字が追加されるため、エスケープする必要がなくなります。インスタンス:

SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')
ログイン後にコピー
  • ESCAPE を使用して特殊文字を処理します:
部分文字列に %、_、または などの特殊文字が含まれている場合、 ESCAPE 句を使用して、文字の特別な意味を取り消すプレースホルダ文字を指定できます。例:

以上がSQL クエリで LIKE 値を PDO に正しくバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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