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

PHP で LIKE 値を PDO に安全にバインドするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-05 15:01:14526ブラウズ

How to Safely Bind LIKE Values with PDO in PHP?

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

LIKE 演算子を使用して文字列の部分一致を実行するクエリでは、LIKE 演算子を使用して LIKE 値をバインドします。 PDO 拡張子は混乱を招く可能性があります。これを正しく処理する方法を見てみましょう。

LIKE による部分文字列一致

LIKE 演算子を使用する場合は、部分文字列に % を追加して、一致するレコードを検索します。例:

SELECT wrd FROM tablename WHERE wrd LIKE '$partial%'

ここで、$partial は、wrd 列が一致する必要がある文字列を表します。

PDO とのバインド

PDO を使用した $partial 値には、いくつかの値がありますオプション:

  1. クエリでワイルドカードを使用してバインド: 次のように、% ワイルドカードをクエリに直接含めることができます:
$stmt = $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :partial");
$stmt->bindParam(':partial', $partial);

ここ, $partial は何も指定せずに :partial プレースホルダーにバインドされます。

  1. クエリ内でワイルドカードを使用しないバインド: このメソッドはクエリから % ワイルドカードを削除するため、バインド時に手動で追加する必要があります:
$stmt = $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')");
$stmt->bindParam(':partial', $partial);
  1. 特殊文字の処理: 部分文字列の場合LIKE クエリで特別な意味を持つ文字 (%、_、など) が含まれている場合は、バインドする前にこれらの文字をエスケープする必要があります:
$escaped = str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $partial);
$stmt = $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'");
$stmt->bindParam(':term', $escaped);

これらのガイドラインに従うことで、LIKE 値を効果的にバインドできます。 PDO を使用し、データベース クエリで部分的な文字列一致を実行します。

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

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