Heim >Backend-Entwicklung >PHP-Tutorial >Warum wirft mein MySQLi-Code die Fehlermeldung „mysqli::query(): Couldn't fetch mysqli'?

Warum wirft mein MySQLi-Code die Fehlermeldung „mysqli::query(): Couldn't fetch mysqli'?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-04 10:17:14188Durchsuche

Why Does My MySQLi Code Throw

MySQLI-Fehler: Objekt ist geschlossen oder Fehler beim Abrufen

Problembeschreibung

Die Fehlermeldung „mysqli::query(): Konnte nicht abgerufen werden mysqli in Zeile 43“ weist auf ein Verbindungsproblem mit MySQL hin Datenbank.

Code-Snippet

Das erwähnte Codesegment umfasst eine Verbindungsdatei („inc_LadleDB.php“) und eine Klasse („EventCalendar“), die mit der Datenbank interagiert. Hier ist der relevante Code:

// 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();
    }
}

Ursache

Der Fehler entsteht dadurch, dass die Datenbankverbindung vorzeitig geschlossen wird, insbesondere in der Destruktormethode „__destruct()“. Wenn das Objekt zerstört wird, wird die Datenbankverbindung geschlossen, aber nachfolgende Abfragen versuchen weiterhin auszuführen, was zu dem Fehler führt.

Lösung(en)

Um das Problem zu beheben, stellen Sie sicher, dass die Die Datenbankverbindung bleibt während der Ausführung aller Abfragen geöffnet. Eine mögliche Lösung besteht darin, die „close()“-Anweisung aus dem Destruktor zu entfernen. Beachten Sie die folgende Änderung:

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

Tipp

Bedenken Sie, dass die Methode „__destruct()“ automatisch aufgerufen wird, wenn ein Objekt zerstört wird, sodass das Schließen der Verbindung dort andernfalls zu Fehlern führen kann Abfragen oder Datenbankoperationen werden noch ausgeführt.

Das obige ist der detaillierte Inhalt vonWarum wirft mein MySQLi-Code die Fehlermeldung „mysqli::query(): Couldn't fetch mysqli'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn