Heim > Artikel > Backend-Entwicklung > Warum erhalte ich beim Versuch, Kategorien abzurufen, die Meldung „Schwerwiegender Fehler: Aufruf einer Member-Funktion Prepare() auf Null“?
Schwerwiegender Fehler: Mysteriöser Aufruf einer Null-Member-Funktion
Abfrage:
I' Beim Versuch, eine Liste von Kategorien mit diesem Code abzurufen, stoße ich auf den rätselhaften Fehler „Schwerwiegender Fehler: Aufruf einer Member-Funktion Prepare() auf Null“:
<code class="php">$category = new Category; $categories = $category->fetch_all();</code>
Kontext:
Die Category-Klasse verfügt über die folgenden Methoden:
<code class="php">class Category { public function fetch_all() { global $pdo; $query = $pdo->prepare("SELECT * FROM dd_cat"); ... } public function fetch_data($cat_id) { global $pdo; $query = $pdo->prepare("SELECT * FROM dd_cat WHERE cat_id = ?"); ... } }</code>
Ich habe diesen Code in zwei anderen Abschnitten meines Projekts erfolgreich verwendet, aber er bereitet mir hier Probleme.
Antwort:
Das Problem tritt auf, weil die Variable $pdo null ist. Es muss mit einem PDO-Objekt initialisiert werden, bevor die Klassenmethoden aufgerufen werden können. Dies liegt an der Art und Weise, wie die Methoden in der Category-Klasse implementiert wurden.
Um den Fehler zu beheben, fügen Sie den folgenden Code zu Ihrem Skript hinzu:
<code class="php">$pdo = new PDO('mysql:host=localhost;dbname=test', $user, $pass);</code>
Stellen Sie sicher, dass dieser Code platziert wird im globalen Bereich, vor allen Aufrufen der Category-Klassenmethoden.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich beim Versuch, Kategorien abzurufen, die Meldung „Schwerwiegender Fehler: Aufruf einer Member-Funktion Prepare() auf Null“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!