我读过该PDO::Prepare
函数创建了一个安全查询。这是否意味着转义字符不需要手动字面化?比如反斜杠字符。
问问题
72 次
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 回答