PHP / MySQL:准备好的语句是解决方案吗?

时间:2012-08-30 08:44:23

标签: php mysql pdo

如果我在所有MySQL查询中使用预准备语句,我是否还需要使用mysql_real_escape_string()等来阻止它进行SQL注入?

问题:我通过foreach所有$_POST个元素和mysql_real_escape_string()每个元素运行我的代码。

但是当我开始在textareas上使用CKEditor时它就成了一个问题,因为它生成了插入数据库的HTML代码,但在插入之前,它会通过我提到的foreach循环以前,转义CKEditor生成的所有引号,使其在HTML页面中显示时不起作用。

所以也许准备好的陈述是要走的路?

1 个答案:

答案 0 :(得分:2)

如果正确使用预准备语句,则无需转义要插入的内容,因为您要将内容与SQL代码分开。

但它不是一种神奇的方法,只是“使用准备好的方法”。您需要确保您的代码实际进入参数。你可以(我不是说你这样做,但可以肯定)只是准备一个你本来可以运行的查询,并且遇到过你曾经遇到过的相同问题。

如果你还记得预备语句不是一个神奇的“现在它是安全的”按钮,你可以跳过转义代码。