我已经读过PDO::Prepare
函数创建安全查询。这是否意味着转义字符不需要手动字面化?比如反斜杠字符。
答案 0 :(得分:5)
否绝对不是这个意思。你读的是误导。
“预准备语句”和“参数化查询”之间存在差异。你希望后者用于卫生目的。
例如:
$pdo->prepare("SELECT * FROM t1 WHERE col1 = $USER_PROVIDED_VALUE");
即使准备好也根本不安全。相反,你必须这样做:
$stmt = $pdo->prepare("SELECT * FROM t1 WHERE col1 = ?");
$stmt->execute(array($USER_PROVIDED_VALUE));
如果您没有正确参数化,那么在安全性方面准备查询不会为您做任何事情。