Php PDO::准备安全

Php PDO::准备安全,php,mysql,pdo,Php,Mysql,Pdo,我已经读到,PDO::Prepare函数创建了一个安全的查询。这是否意味着转义字符不需要手动进行文字化?例如反斜杠字符。不,这绝对不是这个意思。你读到的是误导 “准备好的语句”和“参数化查询”之间有区别。出于卫生目的,您需要后者 例如: $pdo->prepare("SELECT * FROM t1 WHERE col1 = $USER_PROVIDED_VALUE"); 即使准备好了,也不安全。相反,您必须这样做: $stmt = $pdo->prepare("SELECT *

我已经读到,
PDO::Prepare
函数创建了一个安全的查询。这是否意味着转义字符不需要手动进行文字化?例如反斜杠字符。

不,这绝对不是这个意思。你读到的是误导

“准备好的语句”和“参数化查询”之间有区别。出于卫生目的,您需要后者

例如:

$pdo->prepare("SELECT * FROM t1 WHERE col1 = $USER_PROVIDED_VALUE");
即使准备好了,也不安全。相反,您必须这样做:

$stmt = $pdo->prepare("SELECT * FROM t1 WHERE col1 = ?");
$stmt->execute(array($USER_PROVIDED_VALUE));
如果您没有正确地参数化查询,那么准备查询在安全性方面不会有任何帮助