mysql_real_escape_string()在MySQL中留下斜杠

Eri*_*amb 12 php mysql mysql-real-escape-string

我刚搬到一家新的托管公司,现在每当一个字符串被转义时使用:

mysql_real_escape_string($str);
Run Code Online (Sandbox Code Playgroud)

斜杠仍保留在数据库中.这是我第一次看到这种情况发生,因此我的脚本都没有使用

stripslashes()
Run Code Online (Sandbox Code Playgroud)

了.

这是在一个运行php 5.2.6的CentOS 4.5 64bit作为lighttpd 1.4服务器上的fastcgi.我确保所有magic_quotes选项都关闭,mysql客户端api是5.0.51a.

我在所有6个网络服务器上都遇到了同样的问题.

任何帮助,将不胜感激.

谢谢.

编辑:

Magic Quotes不亮.请不要建议将其关闭.这不是问题.

And*_*ter 16

你搬家的主人可能已经magic_quotes_runtime开启了.你可以把它关掉set_magic_quotes_runtime(0).

请关闭magic_quotes_runtime,然后更改代码以使用绑定变量,而不是使用字符串转义.

  • 如果不能解决这个问题怎么办?这没有任何意义...... (6认同)

Ste*_*ayi -4

mysql_real_escape_string($str);应该正是这样做的。它的目的是向特殊字符添加反斜杠,特别是当您想将查询传递给 mysql 时。请注意,它还考虑了 mysql 的字符集。

为了更安全的编码实践,最好编辑代码并使用它stripslashes()来读出数据并删除斜杠。

  • 斜杠只是为了转义要插入的字符串,它们不应该出现在数据库中。您永远不必对从数据库中提取的数据运行 stripslashes()。 (2认同)