mysqli_real_escape_string
是 PHP 中用于防止 SQL 注入的一种函数。它通过转义特殊字符来确保用户输入的安全性。以下是对该函数的详细介绍:
函数概述
- 用途:用于对字符串进行转义,以便安全地将其插入到 SQL 查询中。
- 语法:
string mysqli_real_escape_string ( mysqli $link , string $escapestr )
参数说明
- $link:一个有效的 MySQLi 连接对象,表示数据库连接。
- $escapestr:要转义的字符串。
返回值
- 返回转义后的字符串,可以安全地用于 SQL 查询。
示例
以下是使用 mysqli_real_escape_string
的示例:
<?php
// 创建数据库连接
$mysqli = new mysqli("localhost", "username", "password", "database");
// 检查连接
if ($mysqli->connect_error) {
die("连接失败: " . $mysqli->connect_error);
}
// 用户输入
$user_input = "O'Reilly";
// 使用 mysqli_real_escape_string 转义用户输入
$safe_input = $mysqli->real_escape_string($user_input);
// 创建 SQL 查询
$sql = "SELECT * FROM users WHERE last_name = '$safe_input'";
// 执行查询
$result = $mysqli->query($sql);
// 处理结果
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo "姓名: " . $row["last_name"];
}
} else {
echo "没有结果";
}
// 关闭连接
$mysqli->close();
?>
注意事项
- 不完全安全:虽然
mysqli_real_escape_string
可以防止大部分 SQL 注入攻击,但仍建议使用参数化查询(prepared statements)来进一步提高安全性。 - 字符集:确保在使用该函数之前,数据库连接的字符集已正确设置,以避免字符编码问题。