2011-08-06 10 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

相關問題