为什么PHP's PDO ext不能自动转义输入?


Why can't PHP's PDO ext automatically escape input?

与其在单独的语句中绑定每个值,为什么PHP PDO不能有一些配置设置来转义所有输入?

如果您单独绑定所有内容,那么您正在以困难的方式进行操作。没有。

$dbh = PDO->new(...);
$sth = $dbh->prepare("SELECT foo FROM bar WHERE baz = ?");
$sth->execute(array("this doesn't need to be escaped!"));
...

您可以使用包装器函数使这更容易:

function dbQuery($sql /* ... */) {
    global $dbh;
    $args = func_get_args();
    array_shift($args);
    $sth = $dbh->prepare($sql);
    $sth->execute($args);
    return $sth;
 }
 $sth = dbQuery("SELECT foo FROM bar WHERE baz = ? AND qux != ?", "blah", "blah blah");
 ...