我需要使用非常具体的值更新几个不同表中的列(没有参数)。
代码类似于:
public Function InitializeJob()
{
$stmt = $this->mysqli->prepare("Update `Table1` set `Job` = 'Init');
$stmt->execute();
$stmt->close();
$stmt = $this->mysqli->prepare("Update `Table2` set `Job` = 'Init');
$stmt->execute();
$stmt->close();
$stmt = $this->mysqli->prepare("Update `Table2` set `Job` = 'Init');
$stmt->execute();
$stmt->close();
}
我想知道 - 我应该关闭每个连接,只是重新打开它?或者我应该在结束时关闭它一次? $ this-> mysqli只是我的存储库中的一个局部变量,它是一个mysqli对象。
从连接角度来看,将其关闭3次与最后关闭它的区别是什么? $ this-> mysqli会有一个值,所以它不像我重新初始化它(如果它是空的,我只会初始化它)。
我的猜测是,在最后只使用一个$ stmt-> close()会更好?
谢谢,只是好奇!
答案 0 :(得分:2)
我想知道 - 我应该关闭每个连接,只是重新打开它吗?
没有
或者我应该在结束时关闭它一次?
都不是。
请注意,没有关闭的连接。您关闭的是一份声明,无论如何都会在下一行结束。
没有参数
然后准备好的声明在这里没用。所以你的代码基本上应该看起来像
public Function InitializeJob()
{
$this->mysqli->query("Update `Table1` set `Job` = 'Init'");
$this->mysqli->query("Update `Table2` set `Job` = 'Init'");
$this->mysqli->query("Update `Table3` set `Job` = 'Init'");
}
越简单越好。
答案 1 :(得分:0)
我认为应该这样做
public Function InitializeJob(){
$stmt = $this->mysqli->prepare("mysql statement 1");
$stmt->execute();
$stmt->free_result();
$stmt->reset();
$stmt = $this->mysqli->prepare("mysql statement 2");
$stmt->execute();
$stmt->free_result();
$stmt->reset();
$stmt = $this->mysqli->prepare("mysql statement 3");
$stmt->execute();
$stmt->free_result();
$stmt->reset();
$stmt->close();
}
你在重新使用$ stmt之前做了free_result并重置。