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'utilise PDO dans mon code PHP ?

Pourquoi est-ce que je reçois une « Erreur fatale : appel à une fonction membre préparer() sur null » lorsque j'utilise PDO dans mon code PHP ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 16:32:02661parcourir

Why am I getting a

Correction de "Erreur fatale : appel à une fonction membre préparer() sur null"

Introduction

Lors d'une tentative d'interaction avec une base de données à l'aide d'un Approche orientée objet PHP, rencontrer l'"Erreur fatale : appel à une fonction membre préparer() sur null" peut être frustrant. Cette erreur indique que le script PHP tente d'accéder à une méthode (dans ce cas, la méthode prepare()) d'un objet qui n'a pas été correctement instancié ou initialisé.

Analyse du problème

L'erreur fournie dans la question suggère que la variable $pdo est nulle lorsque la méthode prepare() de la classe Category est appelée. Cela indique que l'objet PDO, qui est utilisé pour se connecter et interagir avec la base de données, n'a pas été créé dans la portée globale.

Solution

Pour résoudre l'erreur, l'objet PDO doit être correctement initialisé et connecté à la base de données. Le code suivant peut être ajouté en haut du script, en dehors de toute définition de fonction ou de classe :

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

Remplacez localhost par le nom de votre serveur de base de données, test avec le nom de la base de données, $user par la base de données nom d'utilisateur et $pass avec le mot de passe de la base de données.

Ce code crée un nouvel objet PDO et le connecte à la base de données. Désormais, la variable $pdo sera disponible pour toutes les méthodes de la classe Category et la méthode prepare() pourra être appelée sans rencontrer d'erreur.

Notes supplémentaires

1. Portée globale :
La variable $pdo doit être déclarée dans la portée globale pour garantir qu'elle est accessible à toutes les méthodes de la classe Category. Les méthodes définies dans une classe ne peuvent accéder qu'aux variables déclarées globalement ou transmises comme arguments à la méthode.

2. Origine de l'erreur :
Le code fourni dans la question n'inclut pas la ligne où l'erreur se produit. Par conséquent, il est seulement possible de spéculer que l'erreur est causée par la valeur nulle de $pdo lorsque la méthode prepare() est appelée.

3. Initialisation de la méthode de classe :
Les méthodes fetch_all() et fetch_data() de la classe Category s'appuient toutes deux sur la variable $pdo, elles ne doivent donc être appelées qu'après que la variable $pdo a été initialisée avec succès dans la portée globale. .

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