Warum erhalte ich beim Zugriff auf Datenbankergebnisse die Fehlermeldung „Es wird versucht, die Eigenschaft eines Nichtobjekts abzurufen'?

Barbara Streisand
Freigeben: 2024-11-08 01:13:03
Original
314 Leute haben es durchsucht

Why am I getting the

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

Und auf Ihrer Ansichtsseite:

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

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:

  • Das Ergebnis in ein Array konvertieren:
$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

Dadurch werden die Ergebnisse in ein Array von Objekten konvertiert, die Sie verwenden können kann dann auf Ihrer Ansichtsseite iterieren.

  • PDO verwenden:

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

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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!