Heim >Datenbank >MySQL-Tutorial >Warum erhalte ich in meinem PHP-Code die Fehlermeldung „Es wird versucht, eine 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.
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);
Seite anzeigen
foreach ($sidemenus as $sidemenu): echo $sidemenu->mname."<br />"; endforeach;
< 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.
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; }
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!