关闭查询和连接

时间:2016-01-07 00:48:47

标签: php mysql

我正在学习MySQL和PHP,我想消除这个疑问。也许是愚蠢的,但我想以良好的方式学习,但我找不到答案。

所以,我有几个查询,我的疑问是:我是否必须以 $ conn结束 $ result-> close(); 最后一个或只有一个 - >关闭();

示例1:关闭每个

$sql = "CREATE TABLE atable (
idatable INT(5) NOT NULL AUTO_INCREMENT,
name VARCHAR(10) NOT NULL,
lastname VARCHAR(10) NOT NULL,
PRIMARY KEY(idatable))";

$result = $conn->query($sql);
if(!$result) {
    die($conn->error);
}


$result->close();


$sql = "DESCRIBE atable";
$result = $conn->query($sql);
if(!$result) {
    die($conn->error);
}

// Here more code...
$result->close();


$sql = "SELECT * FROM atable";
$result = $conn->query($sql);
if(!$result) {
    die($conn->error);
}


// Here more code...
$result->close();


$conn->close();

示例2:在结束时关闭一次

$sql = "CREATE TABLE atable (
idatable INT(5) NOT NULL AUTO_INCREMENT,
name VARCHAR(10) NOT NULL,
lastname VARCHAR(10) NOT NULL,
PRIMARY KEY(idatable))";

$result = $conn->query($sql);
if(!$result) {
    die($conn->error);
}


$sql = "DESCRIBE atable";
$result = $conn->query($sql);
if(!$result) {
    die($conn->error);
}


// Here more code...


$sql = "SELECT * FROM atable";
$result = $conn->query($sql);
if(!$result) {
    die($conn->error);
}


// Here more code...


$result->close();
$conn->close();

记住我正在学习!谢谢!

1 个答案:

答案 0 :(得分:1)

正如下面的类似文章所述,如果你在执行完后没有关闭每个结果,它将被存储到内存缓冲区中。因此,如果结果使用大量内存(大查询结果),那么将有效地使用result-> close()。

但是在大​​多数情况下,当变量到达其范围的末尾时,它不是必需的,结果是免费的。我会考虑将代码放入函数中,然后根本不需要解决这个问题。 E.g

public function query($sql){

$result = $conn->query($sql);
if(!$result) {
   die($conn->error);
}
   $result->close();

}

或类似的东西。希望这有帮助。

Why do we close result in Mysqli