ホームページ >バックエンド開発 >PHPチュートリアル >LIKE 値を PDO 拡張機能にバインドするにはどうすればよいですか?

LIKE 値を PDO 拡張機能にバインドするにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-16 15:28:03962ブラウズ

How to Bind LIKE Values with the PDO Extension?

PDO 拡張機能を使用した LIKE 値のバインド

LIKE クエリを使用する場合、PDO 拡張機能を使用して変数値をバインドする方法を考慮することが重要です。 '%' ワイルドカード文字を検索文字列の末尾に配置すると、いくつかの課題が生じる可能性があります。

提供されたクエリ内:

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

PDO の ${partial} 変数。 3 つのオプションを検討する価値があります:

オプション 1: 最後に '%' をバインドする

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

このオプションでは、パラメーター :partial はvalue $partial="somet"、末尾の '%' を保持します。

オプション 2: 最後に '%' を付けずにバインドします

select wrd from tablename WHERE wrd LIKE ':partial'

Inこのオプション :partial は $partial="somet%" にバインドされており、実質的に検索文字列の末尾に固定の '%' が付けられます。

オプション 3: MySQL の CONCAT 関数を使用する

SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')

このオプションを使用すると、検索語と '%' の連結を MySQL 自体内で実行できます。

さらに、探している検索語に次のものが含まれる場合があります。 LIKE 演算子で特別な意味を持つ文字 ('%'、'_'、'' など) を使用するには、文字列エスケープを使用したより複雑なアプローチが必要です:

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

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

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