Heim >Backend-Entwicklung >PHP-Tutorial >Wie behebe ich den Fehler „Aufruf einer Mitgliedsfunktion fetch_assoc() für ein Nicht-Objekt' in MySQLi?

Wie behebe ich den Fehler „Aufruf einer Mitgliedsfunktion fetch_assoc() für ein Nicht-Objekt' in MySQLi?

Linda Hamilton
Linda HamiltonOriginal
2024-12-07 20:22:16445Durchsuche

How to Fix the

Fehlerbehebung „Aufruf einer Mitgliedsfunktion fetch_assoc() für ein Nicht-Objekt“-Fehler

Beim Ausführen einer Datenbankabfrage mit der MySQLi-Erweiterung kann es vorkommen, dass Fehler „Schwerwiegender Fehler: Aufruf einer Mitgliedsfunktion fetch_assoc() für ein Nicht-Objekt.“ Dieser Fehler tritt auf, wenn die Abfrage fehlschlägt und die resultierende MySQLi-Ergebnismenge null ist.

Problemanalyse

Im angegebenen Codeausschnitt tritt der Fehler auf, weil die Variable $result danach nicht auf Fehler überprüft wird Die Abfrage wird ausgeführt. Daher ist es möglich, dass $result null ist, wenn die Abfrage fehlschlägt, was dazu führt, dass der nachfolgende Aufruf von fetch_assoc() fehlschlägt.

Lösung

Um dieses Problem zu beheben, muss überprüft werden Ergebnis des mysqli_query()-Aufrufs bei Fehlern. Wenn die Abfrage fehlschlägt, sollte eine Ausnahme ausgelöst werden, um den Fehler anzuzeigen. Der überarbeitete Code unten:

function get_recent_highs($view_deleted_images = false)
{
    $lower = $this->database->conn->real_escape_string($this->page_size * ($this->page_number - 1));
    $query = "SELECT image_id, date_uploaded FROM `images` ORDER BY ((SELECT SUM( image_id=`images`.image_id ) FROM `image_votes` AS score) / (SELECT DATEDIFF( NOW( ) , date_uploaded ) AS diff)) DESC LIMIT " . $this->page_size . " OFFSET $lower";
    $result = $this->database->query($query);

    if (!$result) {
        throw new Exception("Database Error [{$this->database->errno}] {$this->database->error}");
    }

    $page = array();
    while($row = $result->fetch_assoc())
    {
        try
        {
            array_push($page, new Image($row['image_id'], $view_deleted_images));
        }
        catch(ImageNotFoundException $e)
        {
            throw $e;
        }
    }

    return $page;
}

Durch das Hinzufügen der if (!$result)-Prüfung stellt der Code sicher, dass alle Datenbankfehler ordnungsgemäß behandelt werden und eine entsprechende Ausnahme ausgelöst wird.

Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Aufruf einer Mitgliedsfunktion fetch_assoc() für ein Nicht-Objekt' in 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