【发布时间】:2010-10-26 06:59:06
【问题描述】:
我使用 PHP 和 MySQL 用 cmets 制作了一个简单的新闻系统,它在我的本地 Apache 服务器上运行良好,无论是在我的 Fedora 10 机器上还是在我的 Windows 7 机器上。但是现在我遇到了一个问题,我将它上传到了一个网络主机,它不断返回所有的 ' 和 " 作为 \' 和 \"。
我相信这要么是出于安全原因自动添加它们的 Web 主机,要么是 MySQL 是错误的排序规则,但我还没有能够解决它,测试了多个 MySQL 排序规则。
下面是一个查询示例:
mysql_query("INSERT INTO news (title, poster, text, time) VALUES ('$newstitle', '1', '$newstext', '$time')") or die(mysql_error());
$time 是 time();
$newstitle 和 $newstext 是从 $_POST 解析的,并且在我运行查询之前都通过 mysql_real_escape_string() 运行(我想这可能是问题所在,但由于它是我不想要的安全性的一部分删除它,因为它不会在我的本地服务器上造成问题)
最后一点:在我的本地 apache 服务器上,latin1_swedish_ci 在 web 主机服务器上不起作用。
编辑:
它们在数据库中看起来像这样:
\'\'\'\"\"\"
虽然在我的本地,他们没有额外的反斜杠,所以它必须是 PHP 添加它。除了添加一个删除多余反斜杠的函数之外,还有什么方法可以解决这个问题?
【问题讨论】:
-
我相信我已经做到了:P 还是我做错了?
-
正如我在评论我自己的答案时所说,如果您选择 Gumbo 的答案会更好,因为他是第一个提出正确解决方案的人,而不是一个“不是真正的解决方案”的解决方案;)