首页 >后端开发 >php教程 >为什么我的 MySQLi 代码抛出'mysqli::query(): Couldn't fetch mysqli”错误?

为什么我的 MySQLi 代码抛出'mysqli::query(): Couldn't fetch mysqli”错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-04 10:17:14188浏览

Why Does My MySQLi Code Throw

MySQLI 错误:对象已关闭或获取错误

问题描述

错误消息“mysqli::query(): Couldn't fetch” mysqli in 第 43 行”表示与 MySQL 的连接问题

代码片段

提到的代码段包括一个连接文件(“inc_LadleDB.php”)和一个与数据库交互的类(“EventCalendar”)。相关代码如下:

// Connection file
$DBConnect = @new mysqli("localhost", "root@localhost", NULL, "Ladle");

// Class constructor
function __construct() {
    include("inc_LadleDB.php");
    $this->DBConnect = $DBConnect;  
}

// Class destructor
function __destruct() {
    if (!$this->DBConnect->connect_error) {
        $this->DBConnect->close();
    }
}

原因

由于数据库连接过早关闭而导致错误,特别是在析构函数“__destruct()”中。当对象被销毁时,它会关闭数据库连接,但后续查询继续尝试执行,从而导致错误。

解决方案

要解决该问题,请确保在执行所有查询期间,数据库连接保持打开状态。一种可能的解决方案是从析构函数中删除“close()”语句。请考虑以下修改:

// Class destructor
function __destruct() {
    // Do not close the connection here
}

提示

请记住,当对象被销毁时,会自动调用“__destruct()”方法,因此如果其他情况下关闭那里的连接可能会导致错误查询或数据库操作仍在执行。

以上是为什么我的 MySQLi 代码抛出'mysqli::query(): Couldn't fetch mysqli”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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