Es wird versucht, 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 Control-Seite:
$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 zurückgibt, kein Array von Objekten. Daher versuchen Sie auf der Ansichtsseite, ü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, über die Sie dann auf Ihrer Ansichtsseite iterieren können.
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 aus der Datenbank abrufen und den Fehler „Es wird versucht, eine Eigenschaft eines Nichtobjekts abzurufen“ vermeiden. „
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3