2

我刚刚禁用了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)将它们翻译\''? 提前致谢。

4

3 回答 3

3

转义 SQL 的目的是避免 SQL 注入。INSERT INTO table VALUES ('it's a test') ..会给您带来麻烦,但是当您逃避它时,它会变成INSERT INTO table VALUES ('it\'s a test') ..并且这将起作用并将“'it's a test'”插入到您的数据库中。

于 2012-04-11T04:40:46.797 回答
1

mysql_real_escape_string() 只是转义字符以正确地将它们放入数据库。所以你不会在你的数据库中看到任何反斜杠。

由于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”.
于 2012-04-11T04:41:53.060 回答
0

INSERT INTO atable VALUES ('it\'s a test')查询执行时

"it's a test"存储在您的数据库中:)

于 2012-04-11T04:45:27.967 回答