Heim  >  Artikel  >  Backend-Entwicklung  >  Warum erhalte ich beim Versuch, Kategorien abzurufen, die Meldung „Schwerwiegender Fehler: Aufruf einer Member-Funktion Prepare() auf Null“?

Warum erhalte ich beim Versuch, Kategorien abzurufen, die Meldung „Schwerwiegender Fehler: Aufruf einer Member-Funktion Prepare() auf Null“?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-30 16:49:03132Durchsuche

Why am I getting a

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!

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