Maison > développement back-end > tutoriel php > Pourquoi mon code MySQLi génère-t-il les erreurs « mysqli::query() : Impossible de récupérer mysqli » ?

Pourquoi mon code MySQLi génère-t-il les erreurs « mysqli::query() : Impossible de récupérer mysqli » ?

Mary-Kate Olsen
Libérer: 2024-12-04 10:17:14
original
186 Les gens l'ont consulté

Why Does My MySQLi Code Throw

Erreur MySQL : l'objet est fermé ou erreur de récupération

Description du problème

Le message d'erreur "mysqli::query() : impossible de récupérer mysqli en ligne 43" signifie un problème de connexion avec MySQL base de données.

Extrait de code

Le segment de code mentionné comprend un fichier de connexion ("inc_LadleDB.php") et une classe ("EventCalendar") qui interagit avec la base de données. Voici le code correspondant :

// Connection file
$DBConnect = @new mysqli("localhost", "root@localhost", NULL, "Ladle");

// Class constructor
function __construct() {
    include("inc_LadleDB.php");
    $this->DBConnect = $DBConnect;  
}

// Class destructor
function __destruct() {
    if (!$this->DBConnect->connect_error) {
        $this->DBConnect->close();
    }
}
Copier après la connexion

Cause

L'erreur survient en raison de la fermeture prématurée de la connexion à la base de données, en particulier dans la méthode destructeur "__destruct()". Lorsque l'objet est détruit, il ferme la connexion à la base de données, mais les requêtes suivantes continuent de tenter de s'exécuter, entraînant l'erreur.

Solution(s)

Pour résoudre le problème, assurez-vous que le la connexion à la base de données reste ouverte pendant l'exécution de toutes les requêtes. Une solution possible consiste à supprimer l'instruction "close()" du destructeur. Considérez la modification suivante :

// Class destructor
function __destruct() {
    // Do not close the connection here
}
Copier après la connexion

Astuce

N'oubliez pas que la méthode "__destruct()" est automatiquement appelée lorsqu'un objet est détruit, donc la fermeture de la connexion peut entraîner des erreurs si d'autres des requêtes ou des opérations de base de données sont toujours en cours d'exécution.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal