Maison >développement back-end >tutoriel php >Pourquoi mon script PHP lance-t-il « mysqli::query() : objet MySQL déjà fermé ou impossible de récupérer l'erreur MySQL » ?

Pourquoi mon script PHP lance-t-il « mysqli::query() : objet MySQL déjà fermé ou impossible de récupérer l'erreur MySQL » ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-16 22:18:14873parcourir

Why is my PHP script throwing

mysqli::query() : objet MySQL déjà fermé ou impossible de récupérer l'erreur MySQL

Problème

Lors de l'exécution d'un script PHP, vous rencontrez ce qui suit erreurs :

  • PHP 7 : mysqli::query() : Impossible de récupérer MySQL dans [script_path] sur la ligne [line_number]
  • PHP 8 : Erreur non détectée : l'objet MySQL est déjà fermé

Explication

Ces erreurs indiquent que votre script PHP tente d'effectuer une requête MySQL après la fermeture de l'objet de connexion MySQL.

Solution

Assurez-vous que votre objet de connexion MySQL est toujours actif avant d'exécuter tout requêtes.

// Check if the MySQL connection is open
if ($mysqli->connect_error) {
    // Handle the connection error
} else {
    // Execute the query
    $result = $mysqli->query($query);
}

Causes possibles

  • Fermeture de la connexion trop tôt : Assurez-vous de fermer la connexion MySQL seulement après tout les requêtes ont été exécutées.
  • Problèmes de destructeur : Évitez de fermer la connexion MySQL dans la méthode destructeur (__destruct) d'une classe s'il y a encore des requêtes à effectuer.
  • Variables de connexion incorrectement déclarées : Vérifiez que la variable de connexion MySQL ($mysqli dans ce cas) est déclaré et attribué correctement tout au long de votre script.

Supplémentaire Notes

  • Dans l'extrait de code fourni pour la classe EventCalendar, la connexion MySQL est fermée dans la méthode destructeur (__destruct). Cela peut poser un problème si des requêtes sont toujours nécessaires après l'appel du destructeur.
  • Assurez-vous que vous utilisez la bonne version de PHP et l'extension MySQL.
  • Vérifiez les journaux du serveur MySQL pour toute erreur supplémentaire. messages.

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