Maison  >  Article  >  développement back-end  >  Pourquoi est-ce que je reçois une « Erreur fatale : appel à une fonction membre préparer() sur null » lorsque j'essaie de récupérer des catégories ?

Pourquoi est-ce que je reçois une « Erreur fatale : appel à une fonction membre préparer() sur null » lorsque j'essaie de récupérer des catégories ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-30 16:49:03132parcourir

Why am I getting a

Erreur fatale : appel mystérieux à une fonction membre nulle

Requête :

Je' Je rencontre l'erreur déroutante "Erreur fatale : appel à une fonction membre préparer() sur null" lorsque j'essaie de récupérer une liste de catégories à l'aide de ce code :

<code class="php">$category = new Category;
$categories = $category->fetch_all();</code>

Contexte :

La classe Category a les méthodes suivantes :

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

J'ai utilisé ce code avec succès dans deux autres sections de mon projet, mais cela me pose problème ici.

Réponse :

Le problème se pose car la variable $pdo est nulle. Il doit être initialisé avec un objet PDO avant que les méthodes de classe puissent être appelées. Cela est dû à la façon dont les méthodes ont été implémentées dans la classe Category.

Pour corriger l'erreur, ajoutez le code suivant à votre script :

<code class="php">$pdo = new PDO('mysql:host=localhost;dbname=test', $user, $pass);</code>

Assurez-vous que ce code est placé dans la portée globale, avant tout appel aux méthodes de la classe Category.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn