Versuch, auf die Eigenschaft eines Nicht-Objekts zuzugreifen
Beim Versuch, Daten aus einer Datenbank abzurufen, tritt die Fehlermeldung „Es wird versucht, eine Eigenschaft abzurufen“ auf von Nicht-Objekt.“ Dieser Fehler tritt auf, wenn Sie versuchen, auf eine Eigenschaft eines Null- oder nicht vorhandenen Objekts zuzugreifen.
In Ihrem spezifischen Szenario haben Sie den folgenden Code auf Ihrer Kontrollseite:
$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con); $sidemenus = mysql_fetch_object($results);
Und auf Ihrer Ansichtsseite:
foreach ($sidemenus as $sidemenu): echo $sidemenu->mname."<br />"; endforeach;
Der Fehler entsteht, weil mysql_fetch_object() ein Objekt und kein Array von Objekten zurückgibt. Daher versuchen Sie auf der Seite „Ansicht“, über ein nicht iterierbares Objekt zu iterieren, was zu dem Fehler führt.
Lösung:
Um das Problem zu beheben, müssen Sie sollte entweder:
$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; }
Dadurch werden die Ergebnisse in ein Array von Objekten konvertiert, die Sie verwenden können kann dann auf Ihrer Ansichtsseite iterieren.
PDO bietet eine modernere und effizientere Möglichkeit, mit Datenbanken zu interagieren. PDOStatement::fetchAll(PDO::FETCH_OBJ) gibt ein Array von Objekten zurück, ähnlich der Funktionalität, die Sie von mysql_fetch_object() erwartet haben.
$stmt = $con->prepare("SELECT * FROM sidemenu WHERE `menu_id` = :menu_id ORDER BY `id` ASC LIMIT 1"); $stmt->bindParam(':menu_id', $menu); $stmt->execute(); $sidemenus = $stmt->fetchAll(PDO::FETCH_OBJ);
Durch die Verwendung einer dieser Lösungen können Sie die Daten von abrufen die Datenbank und vermeiden Sie den Fehler „Es wird versucht, die Eigenschaft eines Nicht-Objekts abzurufen.“
Das obige ist der detaillierte Inhalt vonWarum erhalte ich beim Zugriff auf Datenbankergebnisse die Fehlermeldung „Es wird versucht, die Eigenschaft eines Nichtobjekts abzurufen'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!