Php 何时调用mysqli::close
我应该何时调用mysqli::close?我从未使用if语句检查bind_param()、prep()和execute()是否成功。我应该在方法的末尾调用$stmt->close()。或者我应该在每个条件后调用它,以确保即使进程在某个阶段(例如bind param)失败也关闭数据库连接Php 何时调用mysqli::close,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,我应该何时调用mysqli::close?我从未使用if语句检查bind_param()、prep()和execute()是否成功。我应该在方法的末尾调用$stmt->close()。或者我应该在每个条件后调用它,以确保即使进程在某个阶段(例如bind param)失败也关闭数据库连接 public function function_name($id,$new_id ){ $query = "UPDATE TABLE SET name = ? WHERE field = ? ";
public function function_name($id,$new_id ){
$query = "UPDATE TABLE SET name = ? WHERE field = ? ";
if($stmt=$this->prepare($query)){
if($stmt->bind_param("is", $id, $new_id)){
if($stmt->execute()){
}else{//Could not execute the prepared statement
$message = "Could not execute the prepared statement";
}
}else{//Could not bind the parameters
$message = "Could not bind the parameters";
}
}else{
$message = "Could not prepare the statement";
}
return $message
}
完成连接后,应始终优雅地关闭连接,以避免性能和内存/处理泄漏问题。另一方面,您还应该确保您真的完成了它-如果您尝试使用封闭连接,您的脚本将崩溃
声明也是如此。如果一个语句不再使用,请适当地处理它。稍微考虑一下,您可以创建另一个名为
function\u close
的方法,并在调用function\u name
方法后调用它
这样,如果您更改为pdo或mongo,您只需重构方法,而不是
close
的每个实例 当PHP退出时,它会优雅地关闭数据库连接
使用close方法的唯一原因是当您想要终止不再使用的数据库连接时,您有很多事情要做:比如处理和流式传输数据,但是如果这很快,您可以忘记close语句
将它放在脚本末尾意味着冗余,没有性能或内存增益
重要的是:取消未使用的数据的设置,如果您想避免内存泄漏(在我的拙劣见解中,这是本例中PHP核心的问题),请使用:
这样,套接字也会被终止 您应该关闭它,尤其是在多次查询()之后,因为您可能会遇到内存问题。否则不需要关闭。除非您处于长时间运行脚本的情况下,否则不要麻烦执行关闭操作,因为当脚本退出时,PHP将为您清理。在您完全确定已完成所有数据库操作之前,不应关闭连接。@MarcB-我不确定这样做是否是一种好的做法。虽然PHP会自动破坏一切,但如果你打算进入本机编程世界,那么养成看管资源并在完成后处理它们的习惯是一个非常重要的习惯。顺便说一句,你应该研究PHP异常处理,而不是使用大量的
if
语句:我想他不是在问这个问题。试着想想我会给他一些思考的东西。
mysqli_kill();
mysqli_close();