PHP:SQLのLIKE検索で使用するキーワードのエスケープ - ぷちWiki

最終更新日時:

概要



いわゆるプレースホルダーを使わないような SELECT を PHP で実行する際、キーワードを用いて検索する場合には、そのキーワードをエスケープしないといけません。
特に、LIKE 検索で使用する "%" や "_" が要注意です。


エスケープ例



PHP で SQL で使用する文字をエスケープするには、mysql_escape_string を使うのが一般的ですが、これだけでは LIKE 検索で使用する "%" や "_" はエスケープされません。
従って、以下のように明示的に "%" や "_" は置換し、さらに mysql_escape_string を使用するようにします。

 $keyword = mysql_escape_string(str_replace(array('\\', '%', '_'), array('\\\\', '\%', '\_'), $keyword));