2011-08-06 11 views
-3

为了不必在单独的语句中绑定每个值,为什么不能将PHP PDO的某些配置设置为只是转义所有输入?为什么PHP的PDO分机不能自动转义输入?

+0

为downvotes家伙笑THX,欣赏它。但是,如果你要冷静下来,至少要留下评论。 – blacktie24

+0

你可以有另一个-1来抱怨downvotes并使用txtspeak。它并不像一个技术性问题,而更像是分组。至于说明:当您将数据值混合到SQL命令中时,PHP运行时将连接字符串。 PDO API没有机会看到哪些部分来自变量或常量,并且针对懒惰的神奇SQL安全性无法实现。 – mario

+0

+1用于解释,-1用于将我的句子描述为txtspeak,因为我使用了lol和thx。我想我们也应该避免使用像PDO这样的变量名称,因为没有人喜欢节省时间或任何东西。我真的不明白为什么脂肪肝需要如此关注这些问题。我唯一抱怨的是没有评论的downvotes。不是每个人都有科比的学位。在光明的一面,我很欣赏你的回答的实际答案部分,并发现它非常有帮助。 – blacktie24

回答

4

如果你单独地约束所有东西,你就是在艰难地做着事情。别。

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

黄昏,thx回复。我必须单独绑定所有东西的原因是它适用于搜索功能,它允许许多不同的领域,我不确定我们的领域将被填写。 – blacktie24

相关问题