Heim > Datenbank > MySQL-Tutorial > Warum erhalte ich in meinem PHP-Code die Fehlermeldung „Es wird versucht, eine Eigenschaft eines Nichtobjekts abzurufen'?

Warum erhalte ich in meinem PHP-Code die Fehlermeldung „Es wird versucht, eine Eigenschaft eines Nichtobjekts abzurufen'?

Patricia Arquette
Freigeben: 2024-12-03 12:27:14
Original
367 Leute haben es durchsucht

Why Am I Getting a

Fehlerbehebung beim Versuch, die Eigenschaft eines Nichtobjekts abzurufen

Wenn die Fehlermeldung „Es wird versucht, die Eigenschaft eines Nichtobjekts abzurufen“ angezeigt wird -Objekt“ ist es wichtig, den Kontext seines Auftretens zu untersuchen. Lassen Sie uns einen konkreten Fall untersuchen, um die Ursache und Lösung zu verstehen.

Problemstellung

In einem PHP-Skript ruft eine Abfrage Daten aus einer Datenbank ab, aber wann Beim Versuch, auf bestimmte Eigenschaften des abgerufenen Ergebnisses zuzugreifen, tritt der Fehler auf. Die beteiligten Codeausschnitte sind wie folgt:

Kontrollseite

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);
Nach dem Login kopieren

Seite anzeigen

foreach ($sidemenus as $sidemenu):
  echo $sidemenu->mname."<br />";
endforeach;
Nach dem Login kopieren

< h3>Ursachenanalyse

Die Grundursache liegt in der Annahme dass mysql_fetch_object() ein Array von Objekten zurückgibt, während es in Wirklichkeit nur ein einzelnes Objekt abruft. Beim Durchlaufen des Ergebnisses auf der Ansichtsseite wird versucht, auf Eigenschaften eines Array-Elements zuzugreifen, bei dem es sich in diesem Fall nicht um ein Array, sondern um ein einzelnes Objekt handelt.

Auflösung

Um das Problem zu beheben, ist eine entsprechende Modifikation des Skripts erforderlich. Eine mögliche Lösung besteht darin, das Ergebnis mithilfe einer Schleife in ein Array von Objekten umzuwandeln:

$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;
}
Nach dem Login kopieren

Durch Iteration über das Ergebnis mithilfe einer While-Schleife kann jedes Objekt dem $sidemenus-Array hinzugefügt werden, wodurch ein Array erstellt wird auf die wie erwartet auf der Ansichtsseite zugegriffen werden kann.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich in meinem PHP-Code die Fehlermeldung „Es wird versucht, eine Eigenschaft eines Nichtobjekts abzurufen'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage