説明
$wpdb->esc_like() は、LIKE検索の値に含まれる % や _ などのワイルドカードをエスケープするメソッドです。
基本構文
$wpdb->esc_like( string $text ): string
引数
$text:エスケープする文字列
戻り値
エスケープした文字列。
使い方(サンプル)
global $wpdb;
$like = '%' . $wpdb->esc_like( $keyword ) . '%';
$sql = $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_title LIKE %s", $like );
注意点
prepare()に渡す前に使います。
実務での使いどころ
LIKE検索で、キーワードに含まれる、%や_を、ただの文字として、扱うとき。
よくあるミスと対処
- キーワードを、
esc_like()に通さず、%を、ワイルドカードとして、解釈させている。 %を付けてから、esc_like()に通している。%も、エスケープされる。esc_like()のあとに、%を付ける。esc_like()だけで、SQLの安全が確保できると考えている。$wpdb->prepare()も、併用する。
NG例
$like = $wpdb->esc_like( '%' . $keyword . '%' ); // % もエスケープされる
OK例
$like = '%' . $wpdb->esc_like( $keyword ) . '%';
$rows = $wpdb->get_results(
$wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_title LIKE %s", $like )
);
使い分け早見表
| 関数 | 役割 |
|---|---|
$wpdb->esc_like() |
LIKE 用に、特殊文字をエスケープする |
$wpdb->prepare() |
値を含むSQLを、安全に組み立てる |
esc_sql() |
SQL用に、文字列をエスケープする |
関連項目
公式リファレンス:wpdb::esc_like() | Class method | WordPress Developer Resources

コメント