我正在学习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();
记住我正在学习!谢谢!
答案 0 :(得分:1)
正如下面的类似文章所述,如果你在执行完后没有关闭每个结果,它将被存储到内存缓冲区中。因此,如果结果使用大量内存(大查询结果),那么将有效地使用result-> close()。
但是在大多数情况下,当变量到达其范围的末尾时,它不是必需的,结果是免费的。我会考虑将代码放入函数中,然后根本不需要解决这个问题。 E.g
public function query($sql){
$result = $conn->query($sql);
if(!$result) {
die($conn->error);
}
$result->close();
}
或类似的东西。希望这有帮助。