esc_sql()


WordPressの関数esc_sql()は、SQLクエリにおける変数をエスケープするために使用されます。これにより、SQLインジェクション攻撃を防ぎ、安全なデータベース操作が可能になります。

構文

esc_sql( string $string );
  • $string (string) — SQLクエリ内でエスケープする文字列。

例1: 基本的な使用方法

このコードは、ユーザーから入力された文字列をSQL用にエスケープします。

<?php
$user_input = "O'Reilly";
$safe_input = esc_sql( $user_input );
echo $safe_input;
?>

例2: SQLクエリ内での使用

エスケープされた文字列を使ってSQLクエリを実行します。

<?php
global $wpdb;
$query = "SELECT * FROM {$wpdb->prefix}posts WHERE post_title = '" . esc_sql( $user_input ) . "'";
$results = $wpdb->get_results( $query );
?>

例3: 複数の引数をエスケープする方法

複数の値をエスケープして安全なクエリを作成します。

<?php
$name = "John";
$age = 25;
$query = "SELECT * FROM {$wpdb->prefix}users WHERE name = '" . esc_sql( $name ) . "' AND age = '" . esc_sql( $age ) . "'";
$results = $wpdb->get_results( $query );
?>

例4: 動的なクエリでの使用

動的に生成されたSQLクエリにエスケープを適用します。

<?php
$id = 123;
$query = "SELECT * FROM {$wpdb->prefix}posts WHERE post_id = " . esc_sql( $id );
$results = $wpdb->get_results( $query );
?>

例5: ユーザー入力を含むSQLクエリ

ユーザー入力を含むSQLクエリを作成する際にエスケープを使います。

<?php
$user_input = $_GET['search'];
$query = "SELECT * FROM {$wpdb->prefix}posts WHERE post_content LIKE '%" . esc_sql( $user_input ) . "%'";
$results = $wpdb->get_results( $query );
?>

注意点

  • esc_sql()は、SQLインジェクション攻撃を防ぐために非常に重要です。常にユーザー入力をエスケープしてください。
  • この関数は文字列をエスケープするだけであり、引数として配列やオブジェクトは使用できません。
  • SQLクエリを作成する際は、可能な限りプレースホルダーを使って、安全性を向上させることをお勧めします。

関連機能: