2012-04-07 68 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