关闭MySQL连接(PHP)

时间:2010-06-04 15:43:19

标签: php mysql

我写了一个类来创建与MySQL的自动连接并创建查询。这是它的样子:

include("constants.php");

class MySQLDB {
    var $connection;

    function __construct() {
        $this->connection = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
        mysql_select_db(DB_NAME, $this->connection);
        mysql_set_charset('utf8', $this->connection);
    }

    // SELECT ALL FROM
    function sf($unit, $table) {
        return mysql_query("SELECT ".$unit." FROM ".$table, $this->connection);
    }
        // and so on...
}

$mysql = new MySQLDB;

现在,我认为如果在其他php页面中运行其中一些函数后关闭连接会更好。那么我该怎么做(最有效的方法)呢?

我尝试在课程结束时(在关闭括号之前)添加mysql_close($this->connection);,但它给了我一个错误。

3 个答案:

答案 0 :(得分:3)

如果您阅读manual,则可能不需要此内容:

  

通常不需要使用mysql_close(),因为非持久性打开链接会在脚本执行结束时自动关闭。

如果您仍然想要使用它,您需要但是该类内部的功能...

      function close() {
          mysql_close($this->connection);
      }
          // and so on...
 }
$mysql = new MySQLDB;

答案 1 :(得分:2)

您需要将该代码放在名为__destruct()的函数中,与__construct()的方式非常相似。有关详细信息,请参阅http://php.net/manual/en/language.oop5.decon.php

然后代码如下:

include("constants.php");

class MySQLDB {
    var $connection;
    var $sf;

    function __construct() {
        $this->connection = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
        mysql_select_db(DB_NAME, $this->connection);
        mysql_set_charset('utf8', $this->connection);
    }

    // SELECT ALL FROM
    function sf($unit, $table) {
        return mysql_query("SELECT ".$unit." FROM ".$table, $this->connection);
        $this->sf();
    }
        // and so on...

    function __destruct() {
        mysql_close($this->connection);
    }
}

请注意,运行此方法时,您不知道完全:这取决于对象何时被垃圾回收。但正如Ken在下面提到的那样,执行mysql_close()对于对称性是有利的,但对于释放资源不是必需的。

答案 2 :(得分:0)

查看__destruct()方法添加到您的课程中的内容以及您的密切连接

相关问题