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()