PDO ::准备安全

时间:2013-01-31 20:50:16

标签: php mysql pdo

我已经读过PDO::Prepare函数创建安全查询。这是否意味着转义字符不需要手动字面化?比如反斜杠字符。

1 个答案:

答案 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));

如果您没有正确参数化,那么在安全性方面准备查询不会为您做任何事情。