0

这是我面临的一些奇怪问题,我的本地机器运行 php 5.6.3,而实时服务器运行 php 5.4。我们最近将我们的应用程序从 codeigniter 2.* 更新到了 codeingiter 3.0,现在在实时服务器上运行时,我们开始了解这个全新的问题(较旧的问题,仍然无法工作smtp

遇到 PHP 错误

严重性:8192

消息:mysql_escape_string():此函数已弃用;改用 mysql_real_escape_string() 。

文件名:mysql/mysql_driver.php

行号:319

现在做了一些谷歌搜索后,我发现顶级解决方案可能是 ci 2.*不起作用,因为 codeigniter 的mysql_drivers.php文件已经在使用mysql_real_escape_string(). 一个答案是建议我应该检查database.php文件。如果我的默认连接mysql不是mysqliwhich is mysqli,那么现在我无法找出问题所在或缺少什么。

4

2 回答 2

1

PHPmysql驱动程序自 5.5 起已弃用。见http://php.net/manual/en/intro.mysql.php

所以你最好不要使用它。使用mysqli.

第 319 行mysql/mysql_driver.phphttps ://github.com/bcit-ci/CodeIgniter/blob/3fe79499c5bedb5b3bc4281821776f031f73674e/system/database/drivers/mysql/mysql_driver.php#L319

没有mysql_escape_string()。看来您没有正确更新到 3.0。

于 2015-07-19T22:16:43.433 回答
0

问题是您与 MySQLMySQLi冲突

要解决您的问题,请使用mysqli_real_escape_string()

了解更多细节

关于mysql_escape_string()

警告:
此函数在 PHP 4.3.0 中已被弃用,未来将与整个原始 MySQL 扩展一起被删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。另请参阅 MySQL:选择 API 指南和相关的常见问题解答以获取更多信息。此功能的替代方案包括:
mysqli_escape_string()
PDO::quote()

关于mysql_real_escape_string()

警告:
此扩展自 PHP 5.5.0 起已弃用,将来将被删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。另请参阅 MySQL:选择 API 指南和相关的常见问题解答以获取更多信息。此功能的替代方案包括:
mysqli_real_escape_string()
PDO::quote()

于 2015-07-21T04:34:54.303 回答