You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP调用Database类connect方法报mysqli对象无法转字符串错误

报错原因

该报错由PHP双引号字符串的复杂变量解析规则导致:
在双引号包裹的字符串中直接书写对象链式属性调用$this->connection->connect_errno时,PHP只会解析第一层变量$this->connection,后续的->connect_errno会被识别为普通文本。此时PHP会尝试将$this->connection(mysqli类的实例对象)转换为字符串插入文本中,但mysqli对象默认没有定义__toString()方法,因此抛出「无法将mysqli对象转换为字符串」的致命错误。
你单独打印$this->connection->connect_errno可以得到int类型的错误码,也验证了属性本身的值是正常的,问题仅出在字符串解析阶段。

解决方法

只需修改exit语句中的字符串写法,将链式调用的属性用大括号{}包裹,明确告知PHP这是一个完整的变量表达式即可:

// 原错误写法
exit("<h1>Database connection error: $this->connection->connect_errno</h1>");

// 修正后写法
exit("<h1>Database connection error: {$this->connection->connect_errno}</h1>");

也可以使用另外两种等价的写法实现同样效果:

  • 使用字符串拼接符拼接变量:
exit("<h1>Database connection error: " . $this->connection->connect_errno . "</h1>");
  • 先将错误码赋值给单独变量再插入字符串:
$errCode = $this->connection->connect_errno;
exit("<h1>Database connection error: $errCode</h1>");

额外优化提示

  1. 你代码中$host属性写的localwhost是拼写错误,修改为localhost即可解决2002连接错误。
  2. 不建议使用@符号抑制错误输出,会掩盖正常的报错信息,不利于问题排查。

内容的提问来源于stack exchange,提问作者luksio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:54:03