2013-03-08 61 views
0

在下面,我會說$ val1。 $ val1也準備好了嗎?PDO上的變量/數組是否也執行準備好了?

$sql = "SELECT * FROM table WHERE col1=:var1 LIMIT 1"; 
$q = $conn->prepare($sql); 
$q->execute(array(':var1'=>$val1)); 
+1

沒有。它不是「準備好」的。它會在執行時被簡單地填充到查詢中。 – 2013-03-08 16:22:16

+0

所以我需要檢查$ val1我自己的安全,以避免SQL注入? – 2013-03-08 16:23:47

+1

沒有。這就是爲什麼你使用準備好的語句。數據庫庫將爲您處理任何注射問題。如果你在做'$ sql =「SELECT ... WHERE col1 = $ val1」',那麼是的,你必須自己逃脫。 – 2013-03-08 16:24:18

回答

1

是的,它是「準備好」(你的方式)以及任何其他佔位符的價值。
否則在這種語法中就沒有意義。