PHP mysqli real_escape_string() 函数
示例 - 面向对象风格
转义字符串中的特殊字符
<?php
$mysqli = new mysqli("localhost","my_user","my_password","my_db");
if ($mysqli -> connect_errno) {
echo "无法连接到 MySQL: " . $mysqli -> connect_error;
exit();
}
// 转义特殊字符,如果有的话
$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 行已插入。\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')";
// 此查询将失败,因为我们没有转义 $lastname
if (!$mysqli -> query($sql)) {
printf("%d 行已插入。\n", $mysqli->affected_rows);
}
?>
语法
面向对象风格
$mysqli -> real_escape_string(escapestring)
过程化风格
mysqli_real_escape_string(connection, escapestring)
参数值
参数 | 描述 |
---|---|
连接 | 必需。指定要使用的 MySQL 连接。 |
转义字符串 | 必需。要转义的字符串。编码的字符为 NUL(ASCII 0)、\n、\r、\、'、" 和 Control-Z。 |
技术细节
返回值 | 返回转义后的字符串 |
---|---|
PHP 版本 | 5+ |
示例 - 过程式风格
转义字符串中的特殊字符
<?php
$con = mysqli_connect("localhost","my_user","my_password","my_db");
if (mysqli_connect_errno()) {
echo "无法连接到 MySQL: " . mysqli_connect_error();
exit();
}
// 转义特殊字符,如果有的话
$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 行插入。\n", mysqli_affected_rows($con));
}
mysqli_close($con);
?>
❮ PHP MySQLi 参考