Essayer d'accéder à la propriété d'un non-objet
Lors de la tentative de récupération des données d'une base de données, vous rencontrez l'erreur « Essayer d'obtenir la propriété du non-objet." Cette erreur se produit lorsque vous essayez d'accéder à une propriété d'un objet nul ou inexistant.
Dans votre scénario spécifique, vous avez le code suivant sur votre page Contrôle :
$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con); $sidemenus = mysql_fetch_object($results);
Et sur votre page d'affichage :
foreach ($sidemenus as $sidemenu): echo $sidemenu->mname."<br />"; endforeach;
L'erreur provient du fait que mysql_fetch_object() renvoie un objet, pas un tableau d'objets. Par conséquent, dans la page Affichage, vous tentez de parcourir un objet non itérable, ce qui entraîne l'erreur.
Solution :
Pour résoudre le problème, vous devrait soit :
$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con); $sidemenus = array(); while ($sidemenu = mysql_fetch_object($results)) { $sidemenus[] = $sidemenu; }
Cela convertira les résultats en un tableau d'objets, que vous peut ensuite parcourir votre page d'affichage.
PDO fournit un moyen plus moderne et plus efficace d'interagir avec les bases de données. PDOStatement::fetchAll(PDO::FETCH_OBJ) renvoie un tableau d'objets, similaire à la fonctionnalité que vous attendiez de mysql_fetch_object().
$stmt = $con->prepare("SELECT * FROM sidemenu WHERE `menu_id` = :menu_id ORDER BY `id` ASC LIMIT 1"); $stmt->bindParam(':menu_id', $menu); $stmt->execute(); $sidemenus = $stmt->fetchAll(PDO::FETCH_OBJ);
En utilisant l'une de ces solutions, vous pouvez récupérer les données de la base de données et évitez l'erreur "Essayer d'obtenir la propriété d'un non-objet."
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!