-1
class mysql{

    function __construct(){
        $this->connect();
    }

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

    public function connect(){

        static $mysqli;

        require_once(ROOT_PATH.'/config/db_conf.php');

        @$mysqli = new mysqli($sql_login['host'], $sql_login['user'], $sql_login['password'] , $sql_login['database'], $sql_login['port']);

        if(!$mysqli){
            throw new Exception("Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error);
        }

        return $mysqli;
    }
}

当我尝试连接到 mysql - 一切都很好,但之后我收到警告:mysqli::close(): Couldn't fetch mysqli in...

4

1 回答 1

3

直接回答问题:

  1. 移动“静态 $mysqli;” 成为一个类变量“var $mysqli;”。
  2. 将连接字符串移动到构造中。(为什么有一个只以这种方式调用另一个函数的函数?除非你要第二次连接=不太可能,除非你在搞乱多个连接?)。
  3. 当你连接时,使用类变量(不是静态的。像 hakre 所说的那样丢失@。)
  4. 当您破坏时,不要重新创建新连接,只需关闭您拥有的连接(正如 Yazmat 所说)。

但是:你有这门课的计划吗?mysqli 本身就是一个类,可能会在这个阶段为您提供所需的一切。我会先使用基类,然后再对其进行增强,然后在您更清楚需要额外功能的地方时对其进行增强。一开始保持简单:)

于 2012-08-06T12:11:09.863 回答