首页 >后端开发 >php教程 >为什么我的 PHP 代码中出现'mysqli 对象已关闭”错误?

为什么我的 PHP 代码中出现'mysqli 对象已关闭”错误?

Linda Hamilton
Linda Hamilton原创
2024-12-09 15:47:15334浏览

Why Am I Getting a

mysqli::query(): mysqli 对象已关闭/无法获取 mysqli 错误

在 PHP 中,错误消息指示当尝试访问关闭的数据库连接时,通常会出现“无法获取 mysqli”的情况。这通常出现在 mysqli 连接过早关闭的面向对象编程 (OOP) 脚本中。

错误场景

class_EventCalendar.php 中提供的代码会引发错误由于以下问题:

  1. 析构函数行为: 当 EventCalendar 实例被销毁时,__destruct() 方法会关闭 $DBConnect 对象。这意味着销毁后尝试的任何后续查询都将失败。
  2. 查询执行: 在 addEvent() 方法中,$DBConnect 对象用于执行 SQL 查询。但是,由于析构函数关闭了连接,$DBConnect 对象不再可用。
  3. DBConnect 参数: 确保 @new mysqli() 参数对于您的数据库服务器设置是正确的。在示例代码中,这些参数已从其原始值修改。

解决方案

要解决此问题,请考虑以下操作:

  1. 修改析构函数逻辑:将 __destruct() 方法修改为仅如果没有剩余的查询要执行,则关闭 $DBConnect 对象。这将防止连接过早关闭。
  2. 连接错误处理:使用 try-catch 块或其他错误处理技术在数据库连接文件中优雅地处理连接错误。
  3. PHP 版本: 由于关闭 mysqli 的处理方式发生变化,PHP 8 中也可能会出现“mysqli 对象已关闭”错误对象。确保您的 PHP 版本是最新的。

其他故障排除提示

  • 使用 mysqli::error 检查错误消息与失败的查询相关。
  • 确保在创建 mysqli 连接之前调用 $_SESSION start对象。
  • 检查 PHP 脚本中是否存在 mysqli 连接过早关闭的任何其他实例。

以上是为什么我的 PHP 代码中出现'mysqli 对象已关闭”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn