使用PDO预处理语句可有效防止SQL注入,核心是通过参数化查询将用户输入与SQL逻辑分离,避免恶意代码执行。
使用PDO防止SQL注入是PHP安全编程中的核心技能。关键在于预处理语句
(Prepared Statements)的正确使用。PDO本身并不能自动防止SQL注入,只有配合参数化查询才能真正起到防护作用。
$pdo = new PDO($dsn, $user, $pass);
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->bindParam(':email', $userEmail, PDO::PARAM_STR);
$stmt->execute();
$stmt = $pdo->prepare("SELECT id, name FROM users WHERE age > ? AND status = ?");
$stmt->execute([$minAge, $status]);
注意:不要拼接变量到SQL字符串中,即使用了quote()也不够安全。唯一可靠的方式是占位符 + execute传参。
$pdo->exec("SET NAMES utf8");
基本上就这些。只要坚持使用预处理语句,绝大多数SQL注入问题都能避免。