PHP マニュアル
前のページ |  | 次のページ

# 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 です。

## 返り値

エスケープ済みの文字列を返します。

## 参考

mysqli_character_set_name()

## 例

例 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.

前のページ | ホーム | 次のページ
mysqli_real_connect | 上に戻る | mysqli_real_query