我读到过 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));
如果您没有正确地参数化查询,就安全性而言,准备查询不会为您做任何事情。
关于php - PDO::准备安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14634896/