【问题标题】:PHPUnit undefined function mysql_connect()PHPUnit 未定义函数 mysql_connect()
【发布时间】:2012-05-26 01:45:22
【问题描述】:

当我尝试从 PHP 代码连接到我的 MySQL 数据库时,一切似乎都很好,所有查询都成功执行。但是,当在 PHPUnit 中使用单元测试对代码进行测试时,我收到以下致命的 PHP 错误:

PHP 致命错误:调用未定义函数 mysql_connect()。

如前所述,此代码在单元测试之外运行良好,但 PHPUnit 会产生错误。

【问题讨论】:

  • 您是否使用了两种不同的 PHP 解释器(可能一种是 php-cli,另一种是 php-cgi)?
  • 请停止使用古老的mysql_* 函数编写新代码。它们不再维护,社区已经开始 deprecation processk 。相反,您应该了解prepared statements 并使用PDOMySQLi。如果您无法决定,this article 将帮助您选择。如果你想学习,here is a good PDO-related tutorial.
  • 刚刚快速重写了mysql_代码,但现在PHPUnit显示如下:找不到类'mysqli'。这是在 $mysqli = new mysqli("example.com", "user", "password", "database");被执行。我错过了什么?我是否需要包含一些文件才能使用 mysqli?
  • 您是否在使用命名空间?
  • with phpunit class 'mysqli' is not found 的可能重复项 - 请检查这是否回答了您的问题,基本上您的 PHP CLI 配置没有您的问题建议的 MySQL。

标签: php mysql phpunit


【解决方案1】:

您可能正在使用命名空间,因此 mysql_queryMySQLi 在那里未定义。

尝试以下方法:

$mysqli = new \MySQLi(...);

【讨论】:

  • 不,恐怕这也不是解决方案。同样的错误:(
【解决方案2】:

我相信您正在使用 PHP 7 或更高版本进行测试。

php documentation mysql_query 中,他们描述了以下内容

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

所以,两种可能的解决方案:

  1. 将 PHP 降级到较低版本 (
  2. 用 MySQLi 或 PDO 替换您的 mysql 函数。

【讨论】:

  • 如果函数实际上是未定义的,那么它很可能是 PHP 7.0 而不是 5.5。只要您愿意忍受弃​​用警告,您就可以在 5.5 或 5.6 中使用 mysql funcs。但话虽如此,长期的选择必须是放弃弃用的功能并改用 PDO。
  • 是的辛巴,我会编辑它。如果只安装了 php5-common 包,这个问题可能与安装 php5-mysql 模块有关。
猜你喜欢
  • 2012-11-29
  • 2016-03-15
  • 1970-01-01
  • 2011-10-25
  • 2012-01-22
  • 1970-01-01
相关资源
最近更新 更多