Heim  >  Artikel  >  Backend-Entwicklung  >  Warum erhalte ich beim Zugriff auf Datenbankergebnisse die Fehlermeldung „Es wird versucht, die Eigenschaft eines Nichtobjekts abzurufen“?

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

Barbara Streisand
Barbara StreisandOriginal
2024-11-08 01:13:03315Durchsuche

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);

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:

  • 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;
}

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);

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!

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