PDO での LIKE クエリの実装
PDO クエリで LIKE 演算子を使用する場合、目的の検索を実現するには正しい構文を確認することが重要です結果。提供されたクエリでは、$query 文字列内の % 記号の配置が間違っていることが問題の原因です。
構文修正
変更されたクエリには % 記号が含まれている必要があります。クエリ文字列内ではなく、$params 配列内で:
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?"; $params = array("%$var1%", "%$var2%");
この変更により、LIKE 演算子が確実に$var1 変数と $var2 変数を操作し、プリペアド ステートメント内でエスケープします。
説明
PDO では、プリペアド ステートメントは動的な値を表すためにプレースホルダー (?) を使用します。 。クエリを実行すると、$params 配列によって、プレースホルダーを置き換える対応する値が提供されます。元のクエリでは、% 記号が $query 文字列内に配置されていたため、PDO はそれらをリテラル文字として扱いました。
% 記号を $params 配列に移動することで、それらが一部であることを示します。クエリ構文自体の一部ではなく、検索される動的値の一部です。
以上がPDO プリペアドステートメントで LIKE 演算子を正しく使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。