转义出现在MySQL中的字符

时间:2014-10-28 17:28:50

标签: php html mysql

我正在将HTML表单从开发(localhost)移动到生产环境,并且初始测试已经发现生产MySQL数据库中出现的转义字符出现问题,该数据库不会出现在localhost数据库中。

我正在使用mysql_real_escape_string来转义表单处理文件和localhost数据库中的字符,这些字符被正确保存,您看到的只是撇号或引号。

然而,一旦移动到生产,表单仍然正确处理,但数据库记录现在在撇号或引号符号前面有反斜杠转义字符。打印记录时会出现反冲,这是不可接受的。

除了localhost和生产正在运行不同版本的MySQL(localhost运行5.5.24-log,生产运行5.0.95-log)之外,没有其他任何东西看起来有所不同。我无法控制生产版本,因为它是由ISP管理的,所以我希望这不是问题。

希望这有道理吗?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

解决方法是在显示输出

之前使用stripslashes()
$text = "Don\'t use mysql_* and use mysqli or PDO instead";
echo stripslashes($text); // would echo it out without the backslash

作为替代方案,您可以开始使用预处理语句,这是处理用户输入和数据库的最佳实践,这也可以省去必须转义所有引号的麻烦,并在显示它们之前剥去反斜杠。