8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

mysqli::query():mysqli 对象已关闭/无法获取 mysqli 错误

Nguyen Huu Phuc 2月前

104 0

警告:mysqli::query():无法在 C:\Program Files (x86)\EasyPHP-DevServer-13.1VC9\data\localweb\my portable files\class_EventCalendar.php 第 43 行获取 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 。有人能帮我了解出了什么问题吗?

在 PHP 8 上执行相同操作时,我发现类似的错误:

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

帖子版权声明 1、本帖标题:mysqli::query():mysqli 对象已关闭/无法获取 mysqli 错误
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Nguyen Huu Phuc在本站《php》版块原创发布, 转载请注明出处!
最新回复 (0)
  • @AycanYaşıt 谢谢,它起作用了,抱歉,我不确定如何正确指定 NULL 密码或用户字段

  • 可能在某个地方你有 DBconnection->close(); 然后一些查询尝试执行。


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

  • 遇到了同样的问题 \'mysqli::query(): Couldn't fetch mysqli\'。在谷歌上搜索后找到了这个答案。我关闭它太晚了。连接并查询数据库后,我添加了一个新的 php 文件,该文件不知道连接,因此显示了消息。如果其他人遇到这个问题,请评论。谢谢

  • Kudos,TT 学到的教训:不要允许任何东西通过 __destruct() 方法破坏 DB 对象。

  • @T.Touda __destruct 在 CLASS 构造后不会被触发,但是“一旦没有对特定对象的其他引用,就会调用析构函数方法,或者在关闭序列期间以任何顺序调用析构函数方法。” 请参阅:php.net/manual/en/language.oop5.decon.php

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

    $DBConnect = new mysqli("localhost","root","","Ladle");
    
  • 你能解释一下为什么原始代码是“错误的”吗?如果凭证错误(这是我看到的唯一变化),应该有一个明确的错误消息

  • @NicoHaase 很简单,root 用户的密码是空字符串,并且提供了 NULL。当凭证不正确时,错误消息通常类似于问题顶部给出的错误。

  • @AycanYaşıt 但在哪种情况下,当提供错误的凭据时,您会收到错误消息“无法获取 mysqli”?此外,文档指出,当不使用参数时,将选择没有密码的用户

  • 引用 11

    我遇到了同样的问题。我将 mysqli 对象中的 localhost 参数更改为“127.0.0.1”,而不是写入“localhost”。它起作用了;我不确定如何或为什么。

    $db_connection = new mysqli("127.0.0.1","root","","db_name");
    
返回
作者最近主题: