web-dev-qa-db-ja.com

mysqli :: query():mysqliを取得できませんでした

警告:mysqli :: query():C:\ Program Files(x86)\ EasyPHP-DevServer-13.1VC9\data\localweb\my portable files\class_EventCalendar.phpの43行目でmysqliを取得できませんでした

以下は私の接続ファイルです:

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

これは私のクラスです:

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

私はOOP PHPと、このエラーが発生している理由がわかりません。このコードを他の場所から引き出し、変更されたのは@new mysqli パラメーター。誰が私が何が間違っているのかを理解するのを助けることができますか?

26
codingManiac

おそらく、接続のクローズDBconnection->close();が発生した後にクエリを実行します。


ヒント...->close();__destruct()、なぜなら__destructは、[〜#〜] class [〜#〜]構築の直後に起動されます。

72
T.Todua

エラーの理由は、mysqliオブジェクトの初期化が間違っていることです。真の構築は次のようになります。

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

同じ問題がありました。 mysqliオブジェクトのlocalhostパラメーターを「localhost」と書く代わりに「127.0.0.1」に変更しました。動いた;どうして、どうしてか分からない。

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

それが役に立てば幸い。