PHP mysqli real_escape_string()関数
例 - オブジェクト指向スタイル
文字列内の特殊文字をエスケープします:
<?php
$mysqli = new mysqli("localhost","my_user","my_password","my_db");
if ($mysqli -> connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
exit();
}
// Escape special characters, if any
$firstname = $mysqli -> real_escape_string($_POST['firstname']);
$lastname = $mysqli -> real_escape_string($_POST['lastname']);
$age = $mysqli -> real_escape_string($_POST['age']);
$sql="INSERT INTO Persons (FirstName, LastName, Age) VALUES ('$firstname', '$lastname', '$age')";
if (!$mysqli -> query($sql)) {
printf("%d Row inserted.\n", $mysqli->affected_rows);
}
$mysqli -> close();
?>
下部の手続き型スタイルの例を見てください。
定義と使用法
real_escape_string() / mysqli_real_escape_string()関数は、接続の現在の文字セットを考慮して、SQLクエリで使用するために文字列内の特殊文字をエスケープします。
この関数は、SQLステートメントで使用できる正当なSQL文字列を作成するために使用されます。次のコードがあるとします。
<?php
$lastname = "D'Ore";
$sql="INSERT INTO Persons (LastName) VALUES ('$lastname')";
// This query will fail, cause we didn't escape $lastname
if (!$mysqli -> query($sql)) {
printf("%d Row inserted.\n", $mysqli->affected_rows);
}
?>
構文
オブジェクト指向スタイル:
<div>$mysqli -> real_escape_string(<em>escapestring</em>)</div>
手続き型のスタイル:
<div>mysqli_real_escape_string(<em>connection, escapestring</em>)</div>
パラメータ値
パラメータ |
説明 |
---|---|
connection | Required 使用するMySQL接続を指定します |
escapestring | Required エスケープする文字列。エンコードされる文字は、NUL (ASCII 0)、\n、\r、\、'、"、および Control-Zです。 |
Technical Details
Return Value: | エスケープされた文字列を返します |
---|---|
PHP バージョン: |
5+ |
例 - 手続き型スタイル
文字列内の特殊文字をエスケープします:
<?php
$con = mysqli_connect("localhost","my_user","my_password","my_db");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit();
}
// Escape special characters, if any
$firstname = mysqli_real_escape_string($con, $_POST['firstname']);
$lastname = mysqli_real_escape_string($con, $_POST['lastname']);
$age = mysqli_real_escape_string($con, $_POST['age']);
$sql="INSERT INTO Persons (FirstName, LastName, Age) VALUES ('$firstname', '$lastname', '$age')";
if (!mysqli_query($con, $sql)) {
printf("%d Row inserted.\n", mysqli_affected_rows($con));
}
mysqli_close($con);
?>
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。