mysqli::query(): 无法获取 mysqli


mysqli::query(): Couldn't fetch mysqli

警告:mysqli::query():无法在第 43 行获取 C:''Program Files (x86)''EasyPHP-DevServer-13.1VC9''data''localweb''my 便携式文件''class_EventCalendar.php中的 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参数。谁能帮助我了解出了什么问题?

在 PHP 8 上执行相同的操作时,我可以观察到类似的错误,指出:

未捕获的错误:mysqli 对象已关闭

可能是您在某个地方DBconnection->close();,然后一些查询尝试执行.


提示:在__destruct() 中插入...->close();有时是错误的(因为__destruct是事件,之后将需要执行查询)

错误的原因是 mysqli 对象的初始化错误。真正的构造是这样的:

$DBConnect = new mysqli("localhost","root","","Ladle");

我遇到了同样的问题。我将 mysqli 对象中的 localhost 参数更改为"127.0.0.1",而不是编写"localhost"。成功了;我不确定如何或为什么。

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

检查 db 名称是否没有 "_" 或 "-"这对我的情况有帮助