PHP中的mysql_escape_string
函数(尽管此函数在PHP 7.0.0中被废弃,并在PHP 7.0.1中被移除)用于转义SQL查询中的特殊字符,以防止SQL注入攻击。然而,现在推荐使用mysqli_real_escape_string
函数或PDO预处理语句来达到同样的目的。
mysql_escape_string
函数被废弃?mysql_escape_string
函数存在安全漏洞,无法完全防止SQL注入攻击。此外,它也不支持最新的MySQL功能和字符集。mysqli_real_escape_string
或使用PDO预处理语句。mysqli_real_escape_string
函数?$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("连接失败: " . $mysqli->connect_error);
}
$user_input = "O'Reilly";
$escaped_input = $mysqli->real_escape_string($user_input);
$sql = "SELECT * FROM books WHERE author = '$escaped_input'";
$result = $mysqli->query($sql);
// 处理结果...
$mysqli->close();
try {
$pdo = new PDO("mysql:host=localhost;dbname=database", "username", "password");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$user_input = "O'Reilly";
$stmt = $pdo->prepare("SELECT * FROM books WHERE author = :author");
$stmt->bindParam(':author', $user_input);
$stmt->execute();
// 处理结果...
} catch (PDOException $e) {
echo "数据库连接失败: " . $e->getMessage();
}
$pdo = null;
在PHP中处理MySQL查询时,应优先使用mysqli_real_escape_string
函数或PDO预处理语句来转义用户输入,以确保安全性和数据完整性。避免使用已废弃的mysql_escape_string
函数,并始终注意防范SQL注入攻击。
领取专属 10元无门槛券
手把手带您无忧上云