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 de 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 pourrez ensuite parcourir dans 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 éviter l'erreur « Essayer d'obtenir la propriété d'un non-objet. "
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3