PDO での LIKE クエリの実装
PDO で LIKE クエリを使用する場合、プレースホルダーを正しく組み込んで変数をバインドする方法を理解することが重要です。この記事では、PDO で LIKE クエリを実装するユーザーが直面した、クエリが結果を返せないという問題に対処します。
ユーザーが指定した元のクエリは、パーセント記号が追加されたプレースホルダーを使用しようとしました。
$query = "SELECT * FROM tbl WHERE address LIKE '%?%' OR address LIKE '%?%'"; $params = array($var1, $var2);
しかし、このアプローチは間違っています。パーセント記号は、クエリ自体ではなくバインド変数に含める必要があります。
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?"; $params = array("%$var1%", "%$var2%");
バインド変数で変数値をパーセント記号で囲むことにより、生成されたクエリでは LIKE 句が確実に検索します。指定された単語を含むアドレス。この調整を行わないと、クエリは次のようなものを生成します。
SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%'
パーセント記号が引用符内に埋め込まれているため、このクエリは失敗します。検索では、正確なテキスト "foo" または " を含むアドレスが検索されます。 bar" ではなく、これらの用語を含む単語ではありません。
以上がPDO でプレースホルダーを使用した LIKE クエリを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。