2013-01-31 129 views
3

我讀過,PDO::Prepare函數創建一個安全查詢。這是否意味着轉義字符不需要手動文字化?如反斜槓字符。PDO ::準備安全

回答

5

這絕對不意味着。你讀的是誤導。

「準備語句」和「參數化查詢」之間有區別。你希望後者出於衛生目的。

例如:

$pdo->prepare("SELECT * FROM t1 WHERE col1 = $USER_PROVIDED_VALUE"); 

是不是安全可言,即使它準備。相反,你必須這樣做:

$stmt = $pdo->prepare("SELECT * FROM t1 WHERE col1 = ?"); 
$stmt->execute(array($USER_PROVIDED_VALUE)); 

準備查詢是不會爲你做任何事情,在安全性方面,如果你不正確的參數吧。