Maison > base de données > tutoriel mysql > Pourquoi est-ce que j'obtiens une erreur « Essayer d'obtenir la propriété d'un non-objet » dans mon code PHP ?

Pourquoi est-ce que j'obtiens une erreur « Essayer d'obtenir la propriété d'un non-objet » dans mon code PHP ?

Patricia Arquette
Libérer: 2024-12-03 12:27:14
original
368 Les gens l'ont consulté

Why Am I Getting a

Dépannage des erreurs « Essayer d'obtenir la propriété d'un non-objet »

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.

Énoncé du problème

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

Afficher la page

foreach ($sidemenus as $sidemenu):
  echo $sidemenu->mname."<br />";
endforeach;
Copier après la connexion

< 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.

Resolution

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

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!

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