我刚刚禁用了magic_quotes_gpc,我注意到我的数据库中的用户输入有撇号,好像没有任何内容被转义。
($_POST['message'])="it's a test";
$string = mysql_real_escape_string(htmlentities($_POST['message']));
然后我将其插入数据库,数据库显示:
it's a test
应用it\'s a test
后,它不应该是mysql_real_escape_string
吗?
或者是将\'
转换为'
的数据库(此处为PHPMyAdmin)?
提前谢谢。
答案 0 :(得分:3)
转义SQL的目的是避免SQL注入。 INSERT INTO table VALUES ('it's a test') ..
会导致您遇到麻烦,但当您将其转义为INSERT INTO table VALUES ('it\'s a test') ..
时,它将会起作用,并将“'它是测试'”插入您的数据库。
答案 1 :(得分:1)
mysql_real_escape_string()只是转义字符以正确地将它们放到DB中。所以你不会在你的数据库中看到没有反斜杠。
由于mysql Doc(http://dev.mysql.com/doc/refman/5.1/en/string-literals.html#character-escape-sequences):
That is, the escaped character is interpreted as if it was not escaped. For example, “\x” is just “x”.
答案 2 :(得分:0)
INSERT INTO atable VALUES ('it\'s a test')
查询执行时
只有"it's a test"
存储在您的数据库中:)