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?
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.
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");
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.