3

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

4

1 回答 1

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

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

于 2013-01-31T20:54:19.643 回答