ホームページ >データベース >mysql チュートリアル >SQL クエリで LIKE 値を PDO に安全にバインドする方法

SQL クエリで LIKE 値を PDO に安全にバインドする方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-13 12:50:10202ブラウズ

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

PDO による LIKE 値のバインド

PDO 拡張機能を使用して LIKE 値をバインドしようとする場合、% ワイルドカード文字がどのように機能するかを考慮することが重要です。

提供された例:

select wrd from tablename WHERE wrd LIKE '$partial%'

バインディングにアプローチするにはいくつかの方法があります:

  • select wrd from tablename WHERE wrd LIKE ':partial%':
    これは :partial をバインドします$partial="somet" に変更すると、クエリは次で終わる単語を検索します。 "somet."
  • select wrd from tablename WHERE wrd LIKE ':partial':
    これにより、バインド値の % を含めて、:partial が $partial="somet%" にバインドされます。部分文字列が % で終わっていないため、クエリでは結果が見つかりません。
  • SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%'):
    このオプションは、バインドされた値を次の値と結合します。 MySQL の最後に % を追加し、ワイルドカード文字を効果的に処理します。

部分的な文字列に特殊文字が含まれる可能性がある複雑な場合(% または _)、追加のエスケープが必要な場合があります:

$stmt= $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'");
$escaped= str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $var);
$stmt->bindParam(':term', $escaped);

このアプローチでは、バインド値内の 、%、および _ の出現をエスケープされたバージョンに置き換えます。

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

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