Heim >Backend-Entwicklung >PHP-Tutorial >Warum erhalte ich in PHP den Fehler „Es wird versucht, eine Eigenschaft eines Nicht-Objekts abzurufen'?

Warum erhalte ich in PHP den Fehler „Es wird versucht, eine Eigenschaft eines Nicht-Objekts abzurufen'?

DDD
DDDOriginal
2024-11-10 12:46:021037Durchsuche

Why Am I Getting the

Versuch, die Eigenschaft eines Nicht-Objekts in PHP abzurufen: Eine detaillierte Erklärung

In PHP wird die Fehlermeldung „Es wird versucht, die Eigenschaft eines Nicht-Objekts abzurufen“ angezeigt -object“-Fehlermeldung kann verwirrend sein. Um die Ursache und Lösung dieses Fehlers zu untersuchen, analysieren wir die bereitgestellten Codeausschnitte:

// Control page
$results = mysql_query(...);
$sidemenus = mysql_fetch_object($results);
// View page
foreach ($sidemenus as $sidemenu) {
    echo $sidemenu->mname."<br />";
}

Das Problem tritt auf, weil mysql_fetch_object() ein einzelnes Objekt zurückgibt, das die erste Zeile des Ergebnissatzes darstellt. wohingegen die Schleife auf der Seite „Ansicht“ $sidemenus als Array behandelt und versucht, als Array auf seine Elemente zuzugreifen Objekte.

// Fix
$results = mysql_query(...);

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

Dieser überarbeitete Code initialisiert $sidemenus als Array und iteriert über die Ergebnismenge, wobei jedes Objekt dem Array hinzugefügt wird. Anschließend kann die Ansichtsseite $sidemenus sicher als Array von Objekten durchlaufen.

Alternativ können Sie für eine effizientere Datenbankverwaltung einen Wechsel zu PDO (PHP Data Objects) in Betracht ziehen. PDOStatement::fetchAll(PDO::FETCH_OBJ) bietet eine ähnliche Funktionalität, jedoch mit verbesserter Leistung und Sicherheit.

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

Stellungnahme:
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