gpt4 book ai didi

php - MySQL存储在一台服务器上转义的字符而不是另一台服务器

转载 作者:行者123 更新时间:2023-11-29 06:52:01 25 4
gpt4 key购买 nike

所以我有一个非常简单的应用程序,它将数据存储在 MySQL 数据库中,数据被发布到一个 php 文件,然后将其包装在 mysql_escape_string() 中,然后将其插入到数据库中。

在我本地安装的运行 php 和 mysql 的 apache 上,它工作正常,但在我的主机帐户上,它存储任何 ' 和 "前面带有\的字符。两个数据库使用相同的 latin1_swedish_ci 字符集,并且都运行相同版本的mysql:5.5.27 但显然表现不同。

我在这方面不知所措。谢谢!

最佳答案

正如@njk 评论的那样,您的托管服务提供商可能在其 PHP 环境中启用了魔术引号。因此,当您的代码看到它们时,PHP 请求参数已经包含转义。然后您使用 mysql_real_escape_string() 将转义应用于“\”转义字符,结果是文字“\”字符最终出现在您的数据库中。

您可以通过上传检查 get_magic_quotes_gpc() 的快速 PHP 脚本来验证托管 PHP 环境中的当前设置。并根据结果打印"is"或“否”。您也可以查看来自phpinfo()的报告。 .

一般来说,您应该始终将您的开发环境与您的托管环境的 PHP 版本和 PHP 设置相匹配,这样您就可以更有把握地测试您的代码,确保它在部署时能够正常工作。

另一个解决方案是编写您的应用程序以在运行时有条件地撤消魔术引号(如果启用了魔术引号)。然后像往常一样应用 mysql 转义。这是一个 PHP 代码示例的链接,用于在运行时撤消魔术引号:http://php.net/manual/en/security.magicquotes.disabling.php

第三条建议是更换托管服务提供商。很好的人,他仍然没有启用 PHP 多年不赞成使用的功能。没有任何借口!

关于php - MySQL存储在一台服务器上转义的字符而不是另一台服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14780429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com