mysqli::query(): mysqli 对象已关闭/无法获取 mysqli 错误
在 PHP 中,错误消息指示当尝试访问关闭的数据库连接时,通常会出现“无法获取 mysqli”的情况。这通常出现在 mysqli 连接过早关闭的面向对象编程 (OOP) 脚本中。
错误场景
class_EventCalendar.php 中提供的代码会引发错误由于以下问题:
-
析构函数行为: 当 EventCalendar 实例被销毁时,__destruct() 方法会关闭 $DBConnect 对象。这意味着销毁后尝试的任何后续查询都将失败。
-
查询执行: 在 addEvent() 方法中,$DBConnect 对象用于执行 SQL 查询。但是,由于析构函数关闭了连接,$DBConnect 对象不再可用。
-
DBConnect 参数: 确保 @new mysqli() 参数对于您的数据库服务器设置是正确的。在示例代码中,这些参数已从其原始值修改。
解决方案
要解决此问题,请考虑以下操作:
-
修改析构函数逻辑:将 __destruct() 方法修改为仅如果没有剩余的查询要执行,则关闭 $DBConnect 对象。这将防止连接过早关闭。
-
连接错误处理:使用 try-catch 块或其他错误处理技术在数据库连接文件中优雅地处理连接错误。
-
PHP 版本: 由于关闭 mysqli 的处理方式发生变化,PHP 8 中也可能会出现“mysqli 对象已关闭”错误对象。确保您的 PHP 版本是最新的。
其他故障排除提示
- 使用 mysqli::error 检查错误消息与失败的查询相关。
- 确保在创建 mysqli 连接之前调用 $_SESSION start对象。
- 检查 PHP 脚本中是否存在 mysqli 连接过早关闭的任何其他实例。
以上是为什么我的 PHP 代码中出现'mysqli 对象已关闭”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!