Heim >Backend-Entwicklung >PHP-Tutorial >Warum erhalte ich in meinen PHP-Datenbankabfragen einen „Schwerwiegenden Fehler: fetch_assoc() für ein Nicht-Objekt'?

Warum erhalte ich in meinen PHP-Datenbankabfragen einen „Schwerwiegenden Fehler: fetch_assoc() für ein Nicht-Objekt'?

Linda Hamilton
Linda HamiltonOriginal
2024-12-09 00:23:14688Durchsuche

Why Am I Getting a

Schwerwiegender Fehler: fetch_assoc() auf einem Nicht-Objekt

Beim Ausführen von Datenbankabfragen kann die folgende Fehlermeldung auftreten:

Fatal error: Call to a member function fetch_assoc() on a non-object

Dieser Fehler tritt auf, wenn die fetch_assoc()-Methode für ein Nicht-Objekt aufgerufen wird, normalerweise ein mysqli_result-Objekt.

Problemanalyse:

Im bereitgestellten Codeausschnitt haben Sie möglicherweise eine Funktion wie die folgende geschrieben:

function get_recent_highs(...){
    $result = $this->database->query($query);
    while($row = $result->fetch_assoc()) {...}
}

If Da $result kein Objekt ist, schlägt der Aufruf von fetch_assoc() fehl. Dies kann auftreten, wenn in der SQL-Abfrage ein Fehler vorliegt, der dazu führt, dass query() „false“ anstelle eines Ergebnisobjekts zurückgibt.

Lösung:

Um das zu beheben Fehler, überprüfen Sie den Rückgabewert von query(). Wenn „false“ zurückgegeben wird, lösen Sie eine Ausnahme aus oder behandeln Sie den Fehler entsprechend. Zum Beispiel:

function get_recent_highs(...){
    $result = $this->database->query($query);
    if (!$result) {
        throw new Exception("Database Error");
    }
    while($row = $result->fetch_assoc()) {...}
}

Indem Sie den Fehler in query() abfangen, können Sie sicherstellen, dass fetch_assoc() nur für ein gültiges Ergebnisobjekt aufgerufen wird, wodurch der Nicht-Objekt-Fehler verhindert wird.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich in meinen PHP-Datenbankabfragen einen „Schwerwiegenden Fehler: fetch_assoc() für ein Nicht-Objekt'?. 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