PHP 致命错误:未捕获的错误:无法使用 mysqli 类型的对象作为数组

Posted

技术标签:

【中文标题】PHP 致命错误:未捕获的错误:无法使用 mysqli 类型的对象作为数组【英文标题】:PHP Fatal error: Uncaught Error: Cannot use object of type mysqli as array 【发布时间】:2017-12-08 22:36:20 【问题描述】:

我不明白为什么这行:

$this->db = mysqli($db['host'],$db['user'],$db['pass'],$db['name']);

把那个错误告诉我:

[05-Jul-2017 11:55:26 Europe/Berlin] php 致命错误:未捕获错误: 不能使用 mysqli 类型的对象作为数组 /var/www/***/public_html/core/classes.php:7

堆栈跟踪:#0 /var/www/***/public_html/core/classes.php(19): 数据库->connectDatabase()

1 /var/www/***/public_html/index.php(5): 核心->__construct()

2 main 在第 7 行的 /var/www/***/public_html/core/classes.php 中抛出

我正在运行 Ubuntu Apache PHP7,phpinfo() 确实提到了 mysqli 分机。

【问题讨论】:

【参考方案1】:

你在mysqli之前尝试过关键字new

$this->db = new mysqli($db['host'],$db['user'],$db['pass'],$db['name']);

还要检查,mysqli 函数的任何给定参数是否是数组(这可能会导致错误)。 $db['host'],$db['pass'],$db['user'],$db['name'] 应该是字符串

【讨论】:

你能不能print_r($db)在这里发布输出,并删除你不想在这里显示的信息。 我打印了 $db 然后意识到我的配置文件存储凭据在 $_db['host'] = "127.0.0.1" ... 并且 mysqli() 是 $db,现在更改它它有效。 很高兴知道!最好的问候!

以上是关于PHP 致命错误:未捕获的错误:无法使用 mysqli 类型的对象作为数组的主要内容,如果未能解决你的问题,请参考以下文章

PHP 致命错误:未捕获的 PDOException:SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误

PHP“致命错误:未捕获错误:调用成员函数prepare()为null”

PHP 致命错误:未捕获的错误:使用 Laravel 5.8 和 PHP 7.4 调用未定义函数 Whoops\Exception\xdebug_is_enabled()

PHP 异常处理 总出现致命错误 无法捕获异常

如何修复 PHPUnit 中的“PHP 致命错误:未捕获的 TypeError:getTest() 参数”错误

PHP致命错误:未捕获错误:找不到类