为什么可以';t PHP';s PDO ext自动转义输入?

为什么可以';t PHP';s PDO ext自动转义输入?,php,pdo,Php,Pdo,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

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");
 ...

谢谢你的回复。我必须单独绑定所有内容的原因是,这是为了一个搜索函数,它允许许多不同的字段,我不确定我们的字段是否会被填写。哈哈,谢谢大家的支持。但如果你要投否决票,至少留下一条评论。你可以用另一个-1来抱怨否决票,并在那个时候使用txtspeak。读起来并不像是一个技术问题,更像是发牢骚。作为解释:当您将数据值混合到SQL命令中时,PHP运行时将连接字符串。PDOAPI没有机会看到哪些部分来自变量或常量,而lazyness的神奇SQL safemaking是不可实现的。+1用于解释,-1用于将我的句子描述为txtspeak,仅仅因为我使用了lol和thx。我想我们也应该避免使用像PDO这样的变量名,因为没有人喜欢节省时间或任何东西。我真的不明白为什么ppl在这些问题上如此势利。我唯一抱怨的是没有评论的反对票。不是每个人都有工商管理硕士学位。从好的方面来说,我非常感谢你回复中的实际答案部分,并发现它非常有用。