多个查询和关闭连接

时间:2016-10-09 02:29:04

标签: php mysql mysqli

我需要使用非常具体的值更新几个不同表中的列(没有参数)。

代码类似于:

 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()会更好?

谢谢,只是好奇!

2 个答案:

答案 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并重置。