【问题标题】:mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() insteadmysql_escape_string():此函数已弃用;改用 mysql_real_escape_string()
【发布时间】:2015-07-19 12:01:49
【问题描述】:

这是我面临的一些奇怪问题,我的本地机器运行 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

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

【问题讨论】:

  • 考虑使用准备好的语句,您不需要使用mysql_escape_string()mysql_real_escape_string()

标签: php mysql codeigniter mysqli codeigniter-3


【解决方案1】:

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

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

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

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

【讨论】:

  • 是的,即使我看到了,但我不知道为什么它会抛出这个警告?我按照博客彻底更新了 CI
  • 什么意思?您的mysql/mysql_driver.php 代码与 3.0 的代码不同,不是吗? 3.0 的代码行 319 是注释 ` * Rollback Transaction`。
【解决方案2】:

问题是你有冲突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-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 2020-04-20
    相关资源
    最近更新 更多