PDO を使用した LIKE クエリの実装
構造化照会言語 (SQL) で LIKE 演算子を使用する場合、パーセント記号 (%) が使用されます0 個以上の部分文字列と一致するワイルドカード文字として使用します。 PDO (PHP データ オブジェクト) を備えた PHP では、LIKE 演算子を利用してデータベース列に対してパターン マッチングを実行できます。
問題の定式化
ユーザーが問題に遭遇しました。 PDO で LIKE 演算子を利用しようとしているとき。変数値に目的の検索語が含まれていることを確認し、他の PDO クエリの機能を検証しているにもかかわらず、LIKE クエリは結果を返しません。
正しいクエリ構文
解決するには問題は、変数値をクエリ文字列に埋め込むのではなく、パーセント (%) ワイルドカードで照合する変数値を $params 配列内で囲むことが重要です。それ自体。正しい構文は次のとおりです。
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?"; $params = array("%$var1%", "%$var2%"); $stmt = $handle->prepare($query); $stmt->execute($params);
説明
元のクエリでは、% ワイルドカードがクエリ文字列に埋め込まれていました。ただし、PDO は値を引用符で囲んでクエリを準備するため、次のようなクエリが作成されます。
SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%'
この誤った構文により、% ワイルドカードがワイルドカードとして正しく機能せず、一致が見つかりません。代わりに $params 配列にワイルドカードを含めることで、パーセント記号が引用符で囲まれず、意図したワイルドカード マッチング機能を実行できるようになります。
以上がPHP で PDO で LIKE 演算子を正しく使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。