Maison >développement back-end >tutoriel 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 ?
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é.
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.
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.
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!