Lorsque vous rencontrez le message d'erreur « Essayer d'obtenir la propriété d'un non-objet » -objet", il est essentiel d'examiner le contexte de son apparition. Examinons un cas spécifique pour comprendre la cause et la résolution.
Dans un script PHP, une requête récupère les données d'une base de données, mais lorsque en essayant d'accéder à des propriétés spécifiques du résultat récupéré, l'erreur se produit. Les extraits de code impliqués sont les suivants :
Page de contrôle
include 'pages/db.php'; $results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con); $sidemenus = mysql_fetch_object($results);
Afficher la page
foreach ($sidemenus as $sidemenu): echo $sidemenu->mname."<br />"; endforeach;
< h3>Analyse des causes
La cause fondamentale réside dans l'hypothèse que mysql_fetch_object() renvoie un tableau d'objets, alors qu'en réalité il ne récupère qu'un seul objet. Lors de l'itération sur le résultat dans la page d'affichage, il tente d'accéder aux propriétés d'un élément du tableau, qui dans ce cas n'est pas un tableau mais plutôt un objet singulier.
Pour résoudre le problème, une modification appropriée du script est requise. Une solution possible consiste à convertir le résultat en un tableau d'objets à l'aide d'une boucle :
$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; }
En parcourant le résultat à l'aide d'une boucle while, chaque objet peut être ajouté au tableau $sidemenus, créant ainsi un tableau accessible comme prévu dans la page d'affichage.
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!