説明
esc_sql() は、SQLクエリに埋め込む文字列をエスケープする関数です。
基本構文
esc_sql( string|array $data ): string|array
引数
$data:エスケープする文字列または配列
戻り値
エスケープ済みの値。
使い方(サンプル)
$safe = esc_sql( $keyword );
注意点
- クエリには
$wpdb->prepare()を使うのが基本です。esc_sql()は補助的に使います。 - エスケープしても、LIKE句のワイルドカードは別途
$wpdb->esc_like()が必要です。
実務での使いどころ
$wpdb->prepare()が使えない場面で、SQLに入れる文字列をエスケープするとき。
よくあるミスと対処
esc_sql()を、主な対策として使っている。公式も、$wpdb->prepare()を推奨している。- 引用符を、自分で付ける必要がある。
esc_sql()は、引用符を付けない。 LIKE検索で、%や_を、エスケープしていない。$wpdb->esc_like()が必要。
NG例
$wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE post_title = " . esc_sql( $title ) ); // 引用符がない
OK例
$wpdb->get_results(
$wpdb->prepare( "SELECT * FROM {$wpdb->posts} WHERE post_title = %s", $title )
);
使い分け早見表
| やりたいこと | 使うもの |
|---|---|
| 値を含むSQLを、安全に組み立てる | $wpdb->prepare() |
| 文字列だけを、SQL用にエスケープ | esc_sql() |
LIKE 検索の値を、エスケープ |
$wpdb->esc_like() |
関連項目
wpdb::prepare()、esc_attr()、wp_kses()
公式リファレンス:esc_sql() | Function | WordPress Developer Resources

コメント