esc_sql() の使い方|説明・引数・注意点

説明

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

コメント

タイトルとURLをコピーしました