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 サイトの他の関連記事を参照してください。