我写了一个类来创建与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);
,但它给了我一个错误。
答案 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()方法添加到您的课程中的内容以及您的密切连接