mysqli真正的逃脱字符串

时间:2012-12-12 06:29:51

标签: php mysql

我正在使用mysqli_real_escape_string的OOP方法转义字符串。我将输入的输入保存到会话变量中以确保它正确转义。它似乎正在逃避,但当我检查输入数据库的内容时,我看不到单引号和双引号之前的斜杠。

所以在浏览器中我回应:

Array
(
    [formContent] => I\'m always here!
)

但在数据库中我看到:

I'm always here!

这是否意味着我的代码在某处出现了问题?谢谢!

2 个答案:

答案 0 :(得分:5)

不,这很正常。 mysqli_real_escape_string会自动为您解除单引号。

当你有字符串时,

I'm always here!

mysqli_real_escape_string将其处理为

I\'m always here!

所以它将保存在数据库中。这就是它的工作原理。

答案 1 :(得分:0)

  

mysqli_real_escape_string - 在SQL语句中使用字符串中的特殊字符转义,并考虑连接的当前字符集

它是什么让它逃脱单引号(在某种程度上从sql注入中保存)

hello 'world

mysqli_real_escape_string将其处理为

hello \'world

您可以使用stripslashes删除\