Maison > développement back-end > tutoriel php > Comment corriger l'erreur « Appel à une fonction membre fetch_assoc() sur un non-objet » dans MySQLi ?

Comment corriger l'erreur « Appel à une fonction membre fetch_assoc() sur un non-objet » dans MySQLi ?

Linda Hamilton
Libérer: 2024-12-07 20:22:16
original
445 Les gens l'ont consulté

How to Fix the

Dépannage "Appel à une fonction membre fetch_assoc() sur un non-objet"

Lors de l'exécution d'une requête de base de données à l'aide de l'extension mysqli, il est possible de rencontrer le error "Erreur fatale : appel à une fonction membre fetch_assoc() sur un non-objet." Cette erreur se produit lorsque la requête échoue et que l'ensemble de résultats mysqli résultant est nul.

Analyse du problème

Dans l'extrait de code donné, l'erreur se produit car la variable $result n'est pas vérifiée pour les erreurs après la requête est exécutée. Par conséquent, il est possible que $result soit nul si la requête a échoué, provoquant l'échec de l'appel ultérieur à fetch_assoc().

Solution

Pour résoudre ce problème, il est nécessaire de vérifier la résultat de l'appel d'erreurs à mysqli_query(). Si la requête échoue, une exception doit être levée pour indiquer l'erreur. Le code révisé ci-dessous :

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;
}
Copier après la connexion

En ajoutant la vérification if (!$result), le code garantit que toutes les erreurs de base de données sont traitées correctement et qu'une exception appropriée est levée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal