web-dev-qa-db-fra.com

mysqli :: query (): Impossible de récupérer mysqli

Avertissement: mysqli :: query (): Impossible d'extraire mysqli dans C:\Program Files (x86)\EasyPHP-DevServer-13.1VC9\data\localweb\mes fichiers portables\class_EventCalendar.php à la ligne 43

Voici mon fichier de connexion:

<?php
if(!isset($_SESSION)) 
{ 
    session_start(); 
}  

// Create array to hold error messages (if any)
$ErrorMsgs = array();

// Create new mysql connection object
$DBConnect = @new mysqli("localhost","root@localhost", 
            NULL,"Ladle");

// Check to see if connection errno data member is not 0 (indicating an error)
if ($DBConnect->connect_errno) {

    // Add error to errors array
    $ErrorMsgs[]="The database server is not available.".
               " Connect Error is ".$DBConnect->connect_errno." ".
               $DBConnect->connect_error.".";
}
?>

Ceci est ma classe:

 <?php 
    class EventCalendar {
        private $DBConnect = NULL;

        function __construct() {
            // Include the database connection data
            include("inc_LadleDB.php");
            $this->DBConnect = $DBConnect;  
        }

        function __destruct() {
            if (!$this->DBConnect->connect_error) {
                $this->DBConnect->close();
            }
        }

        function __wakeup() {
            // Include the database connection data
            include("inc_LadleDB.php");     
            $this->DBConnect = $DBConnect;
        }


        // Function to add events to Zodiac calendar
        public function addEvent($Date, $Title, $Description) {
            // Check to see if the required fields of Date and Title have been entered
            if ((!empty($Date)) && (!empty($Title))) {
                /* if all fields are complete then they are 
                   inserted into the Zodiac event_calendar table */
                $SQLString = "INSERT INTO tblSignUps".
                           " (EventDate, Title, Description) ".
                           " VALUES('$Date', '$Title', '".
                            $Description."')";

                // Store query results in a variable
                $QueryResult = $this->DBConnect->query($SQLString);

Je ne suis pas génial avec OOP PHP et je ne suis pas sûr de savoir pourquoi cette erreur est générée. J'ai extrait ce code ailleurs et la seule chose que j'ai modifiée était les paramètres @new mysqli. Quelqu'un peut-il m'aider à comprendre ce qui ne va pas?

23
codingManiac

Vous fermez la connexion trop tôt avecDBconnection->close();! Faites-le après vos questions!


Explication: ne pas insérer...->close();dans__destruct(), car la connexion est immédiatement fermée chaque fois queCLASSEtermine le chargement.

65
T.Todua

La raison de l'erreur est l'initialisation incorrecte de l'objet mysqli. La vraie construction serait comme ça:

$DBConnect = new mysqli("localhost","root","","Ladle");
9
Aycan Yaşıt

J'ai eu le même problème. J'ai changé le paramètre localhost dans l'objet mysqli en "127.0.0.1" au lieu d'écrire "localhost". Ça a marché; Je ne sais pas comment ni pourquoi.

$db_connection = new mysqli("127.0.0.1","root","","db_name");

J'espère que ça aide.

0