【发布时间】:2011-07-08 22:35:27
【问题描述】:
据说为了防止 SQL 注入,应该过滤输入数据,例如。使用 addlashes 或 mysql_real_escape_string 取决于使用的连接模块
但是,使用 addslashes 转义的数据正在与斜杠一起保存到数据库中,因此用户姓氏将保存为 O\'Reilly 而不是 O'Reilly。需要使用stripslashes 才能正确显示它。
那么如何使用addslashes 并在没有斜杠的情况下保存到数据库中?这真的是应该的方式吗?
【问题讨论】:
-
看起来你两次转义字符串(可能你同时使用 PDO 和
mysql_real_escape_string)。 -
是的,我正在使用 PDO 并且之前添加了斜杠。 PDO 究竟是如何自行转义字符的?
-
如果你使用PDO,并且用
bindParam/bindValue赋值参数,你不用担心转义,PDO会为你做的 -
所以,基本上使用 PDO 时,我可以使用 $_POST["var"] 并将其直接传递给 bindParam/bindValue,对吗?并且在使用mysql_connect时,我必须通过mysql_real_escape_string 输入$_POST