PDO ::准备安全

Lee*_*Lee 3 php mysql pdo

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

Exp*_*lls 5

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

"预准备语句"和"参数化查询"之间存在差异.你希望后者用于卫生目的.

例如:

$pdo->prepare("SELECT * FROM t1 WHERE col1 = $USER_PROVIDED_VALUE");
Run Code Online (Sandbox Code Playgroud)

尽管准备好了,但根本不安全.相反,你必须这样做:

$stmt = $pdo->prepare("SELECT * FROM t1 WHERE col1 = ?");
$stmt->execute(array($USER_PROVIDED_VALUE));
Run Code Online (Sandbox Code Playgroud)

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