2011-12-28 43 views
1

我通过PHP文本框获取数据并使用普通插入命令将其插入MySQL数据库。该文本框接受用户对文本框旁边的特定登录ID的评论。问题是,当用户输入撇号(')例如“我们必须照顾个人电脑”这句话时,会出现错误。插入(Mysql)期间的撇号

我知道为什么会发生这种情况,因为SQL假定它是该值的字符串的结尾,但我不知道如何逃避它。我宁愿在MYSQL中转义它。

如果我在MySQL中逃避它,即使没有错误产生,插入工作正常,它仍然可以作为SQL注入利用?

+0

您应该使用参数。 – SLaks 2011-12-28 02:16:08

+0

使用MySQLi准备好的语句 – 2014-06-29 12:39:24

回答

6

使用mysql_real_escape_string(),或者更好的是,使用参数化查询与PDO

+0

我该怎么做如果我想在MySQL中而不是PHP中转义它。 – Ank 2011-12-28 02:15:12

+0

@Ankur:您正在为查询的上下文转义它。在MySQL *中你不能逃避*,那时已经太晚了。 – alex 2011-12-28 02:16:00

+0

或者我可以在MySQL中替换(''','')吗?我真的不在乎撇号是否在字符串中。 – Ank 2011-12-28 02:18:29