Maison développement back-end tutoriel php Pourquoi est-ce que j'obtiens l'erreur « Essayer d'obtenir la propriété d'un non-objet » lors de l'accès aux résultats de la base de données en PHP ?

Pourquoi est-ce que j'obtiens l'erreur « Essayer d'obtenir la propriété d'un non-objet » lors de l'accès aux résultats de la base de données en PHP ?

Nov 08, 2024 am 04:10 AM

Why Am I Getting the

Erreur : "Essayer d'obtenir la propriété d'un non-objet" lors de l'accès aux résultats de la base de données

Lorsque vous essayez d'accéder aux résultats de la base de données en PHP, vous peut rencontrer l'erreur « Essayer d'obtenir la propriété d'un non-objet ». Cette erreur se produit lorsque vous essayez d'accéder à une propriété d'un objet de résultat de base de données qui n'est pas disponible.

Pour résoudre ce problème, vérifiez que votre requête de base de données renvoie le résultat attendu et que le type de données de la variable renvoyée est correct.

Origine de l'erreur

Considérez cet exemple de code où l'erreur en question peut se manifester :

// Retrieve a single row from the database
$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id` = '{$menu}' ORDER BY `id` ASC LIMIT 1", $con);

// Attempt to access the result as an object
$sidemenus = mysql_fetch_object($results);

// Iterate over the result and display properties
foreach ($sidemenus as $sidemenu) {
    echo $sidemenu->mname . "<br />";
}
Copier après la connexion

L'erreur peut se produire dans la boucle foreach car mysql_fetch_object() renvoie un seul objet, pas un tableau d'objets. Par conséquent, vous ne pouvez pas le parcourir comme un tableau.

Solution

Pour résoudre ce problème, vous pouvez modifier le code pour récupérer correctement les résultats. Une option consiste à utiliser mysql_fetch_array() au lieu de mysql_fetch_object(), qui renvoie un tableau des valeurs de la ligne.

Vous pouvez également utiliser une boucle pour récupérer toutes les lignes et les stocker dans un tableau :

$sidemenus = array();
while ($sidemenu = mysql_fetch_object($results)) {
    $sidemenus[] = $sidemenu;
}

// Iterate over the sidemenus array and display properties
foreach ($sidemenus as $sidemenu) {
    echo $sidemenu->mname . "<br />";
}
Copier après la connexion

Considérations supplémentaires

Envisagez d'utiliser une couche d'abstraction de base de données telle que PDO au lieu des fonctions MySQL obsolètes. PDO offre un moyen plus moderne et sécurisé d'interagir avec les bases de données.

Par exemple, pour utiliser PDO pour récupérer une seule ligne en tant qu'objet :

$sth = $pdo->prepare("SELECT * FROM sidemenu WHERE `menu_id` = :menu_id ORDER BY `id` ASC LIMIT 1");
$sth->execute([':menu_id' => $menu]);
$sidemenu = $sth->fetchObject();

if ($sidemenu) {
    echo $sidemenu->mname;
}
Copier après la connexion

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!

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

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium) 11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium) Mar 03, 2025 am 10:49 AM

11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium)

Introduction à l'API Instagram Introduction à l'API Instagram Mar 02, 2025 am 09:32 AM

Introduction à l'API Instagram

Travailler avec les données de session Flash dans Laravel Travailler avec les données de session Flash dans Laravel Mar 12, 2025 pm 05:08 PM

Travailler avec les données de session Flash dans Laravel

Misque de réponse HTTP simplifié dans les tests Laravel Misque de réponse HTTP simplifié dans les tests Laravel Mar 12, 2025 pm 05:09 PM

Misque de réponse HTTP simplifié dans les tests Laravel

Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST Mar 14, 2025 am 11:42 AM

Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST

Construisez une application React avec un Laravel Back End: Partie 2, React Construisez une application React avec un Laravel Back End: Partie 2, React Mar 04, 2025 am 09:33 AM

Construisez une application React avec un Laravel Back End: Partie 2, React

12 meilleurs scripts de chat PHP sur Codecanyon 12 meilleurs scripts de chat PHP sur Codecanyon Mar 13, 2025 pm 12:08 PM

12 meilleurs scripts de chat PHP sur Codecanyon

Notifications à Laravel Notifications à Laravel Mar 04, 2025 am 09:22 AM

Notifications à Laravel

See all articles