PHP 析构函数显示错误?

标签 php mysql mysqli

我的类中连接到数据库的析构函数中显示错误,我尝试删除析构函数中的变量,但它也显示错误。这是代码:

class DB_CONNECT {
    function __construct() {
        $this->connect();
        echo "connected succesfully";
    }
    function __destruct() {
        $this->close();
    }

    function connect() {
        require_once __DIR__ . '/db_config.php';

        $con = mysqli_connect(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE) 
                or die(mysqli_error());
        if($con){
            echo "connected succesfully";
        }
        return $con;
    }

    function close() {
        mysqli_close($con);
    }
}

并且有错误消息:

mysqli_close() expects parameter 1 to be mysqli

最佳答案

在连接方法中,您没有将 mysqli 对象分配给实例变量。

__destruct中,$con未定义/NULL,这解释了错误消息。

require_once __DIR__ . '/db_config.php';

class DB_CONNECT {
    private $conn;
    function __construct() {
        $this->connect();
    }

    function __destruct() {
        $this->close();
    }

    function connect() {
        $this->conn = mysqli_connect(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE) 
                          or die(mysqli_error());
        echo "connected succesfully";
    }

    function close() {
        mysqli_close($this->conn);
    }
}

关于PHP 析构函数显示错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29322332/

相关文章:

php - 为 CRUD 操作创建历史表的最佳方式

php - 如何检查包含加密电子邮件地址的表中是否存在电子邮件地址

php - 从 mysql 数组中获取值并从字段中匹配

mysql - 如何对数据库进行建模以处理多个时区的计数器

MySQL - 按字母顺序列出给定名称之前的名称详细信息(名字和姓氏分开)

mysql - 如何将我的托管 mysql 数据库导入到我的本地主机数据库?

javascript - Joomla 3.3.0安装错误

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

PHP 警告 : "MySQL server has gone away" after MySQL dump in macOS Terminal

php - cakephp 3 在记录时使用范围