2012-04-07 48 views
0

我知道你不能使用「字符,試圖`來代替,而沒有工作,任何想法PHP PDO MySQL的預處理語句有多個值

$sql = $db->prepare('INSERT INTO testDB VALUES(`$title`,`$bodytext`,`$created`)'); 
+2

反引號用於轉義保留字。你需要定期的單引號。而且,由於您使用的是準備好的語句,因此不應該直接插入類似這樣的值。如果您沒有正確使用它們,世界上所有準備好的語句都不會爲您節省SQL注入攻擊。 – 2012-04-07 21:29:33

回答

3

試試這個:

$sql = $db->prepare('INSERT INTO testDB VALUES(?, ?, ?)'); 
$sql->execute(array($title, $bodytext, $created)); 

我所做的是從SQL查詢中移除變量與?作爲佔位符代替它們。你只在執行時綁定值的語句。

你試圖做的方法它與使用常規SQL查詢沒有區別。

+0

工程,但我的網頁漏洞掃描儀仍然可以破解該網站:( – user576820 2012-04-08 09:07:52

+0

Nvm,原來的代碼一次只顯示3行,掃描儀並沒有實際覆蓋舊數據,所以一切都很好。謝謝你的幫助! – user576820 2012-04-08 10:23:01