mysqli_real_escape_string
(PHP 5)
mysqli_real_escape_string
(no version information, might be only in CVS)
mysqli->real_escape_string --
接続の現在の文字セットを考慮して、SQL 文で使用する文字列の
特殊文字をエスケープする
説明
手続き型:
string
mysqli_real_escape_string ( mysqli link, string escapestr )
オブジェクト指向型(どちらのメソッドも等価です):
class
mysqli {
string
escape_string ( string escapestr )
string
real_escape_string ( string escapestr )
}
この関数は、SQL 文中で使用できる正当な形式の SQL 文字列を作成するために
使用されます。文字列 escapestr が、エスケープされた
SQL に変換されます。その際、接続で使用している現在の文字セットが
考慮されます。
エンコードされる文字は NUL (ASCII 0), \n, \r, \, ', ", および Control-Z
です。
例
例 1. オブジェクト指向型
<?php $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* 接続状況をチェックします */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); }
$mysqli->query("CREATE TEMPORARY TABLE myCity LIKE City");
$city = "'s Hertogenbosch";
/* このクエリは失敗します。なぜなら $city をエスケープしていないからです */ if (!$mysqli->query("INSERT into myCity (Name) VALUES ('$city')")) { printf("Error: %s\n", $mysqli->sqlstate); }
$city = $mysqli->real_escape_string($city);
/* $city をエスケープしたので、このクエリは正しく動作します */ if ($mysqli->query("INSERT into myCity (Name) VALUES ('$city')")) { printf("%d Row inserted.\n", $mysqli->affected_rows); }
$mysqli->close(); ?>
|
|
例 2. 手続き型
<?php $link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* 接続状況をチェックします */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); }
mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City");
$city = "'s Hertogenbosch";
/* このクエリは失敗します。なぜなら $city をエスケープしていないからです */ if (!mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) { printf("Error: %s\n", mysqli_sqlstate($link)); }
$city = mysqli_real_escape_string($link, $city);
/* $city をエスケープしたので、このクエリは正しく動作します */ if (mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) { printf("%d Row inserted.\n", mysqli_affected_rows($link)); }
mysqli_close($link); ?>
|
|
上の例の出力は以下となります。
Error: 42000
1 Row inserted. |