-3
为了不必在单独的语句中绑定每个值,为什么不能将PHP PDO的某些配置设置为只是转义所有输入?为什么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 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");
...
黄昏,thx回复。我必须单独绑定所有东西的原因是它适用于搜索功能,它允许许多不同的领域,我不确定我们的领域将被填写。 – blacktie24
为downvotes家伙笑THX,欣赏它。但是,如果你要冷静下来,至少要留下评论。 – blacktie24
你可以有另一个-1来抱怨downvotes并使用txtspeak。它并不像一个技术性问题,而更像是分组。至于说明:当您将数据值混合到SQL命令中时,PHP运行时将连接字符串。 PDO API没有机会看到哪些部分来自变量或常量,并且针对懒惰的神奇SQL安全性无法实现。 – mario
+1用于解释,-1用于将我的句子描述为txtspeak,因为我使用了lol和thx。我想我们也应该避免使用像PDO这样的变量名称,因为没有人喜欢节省时间或任何东西。我真的不明白为什么脂肪肝需要如此关注这些问题。我唯一抱怨的是没有评论的downvotes。不是每个人都有科比的学位。在光明的一面,我很欣赏你的回答的实际答案部分,并发现它非常有帮助。 – blacktie24