何时在PHP中关闭预处理语句?
示例:
$query = "insert into web_reviews (title,added_date,reviewer_home_url,read_more_link,summary) values(?,?,?,?,?)";
$stmt = $this->db->prepare($query);
$stmt->bind_params($this->title,$this->added_date,$this->reviewer_home_url,$this->read_more,$this->summary);
$stmt->execute() or die("Cannot add the date to the database, please try again.");
$stmt->close();
$stmt = $this->db->prepare("select id from web_reviews where title = ? and read_more = ?");
$stmt->bind_params($this->title,$this->read_more);
$stmt->execute();
$stmt->bind_results($web_review_id);
$stmt->close();
我应该在此处使用$stmt->close();
吗?
编辑:
PHP手册上所写的,以及来自手册的一条评论说:
关闭一个准备好的语句。 mysqli_stmt_close()还会释放语句句柄。如果当前语句有未执行完或未读取的结果,这个函数将取消它们,以便下一个查询可以被执行。
评论:
如果你正在使用bind_param等在循环中重复执行语句进行更大规模的操作。我认为用stmt->close清理它会很好,但在大约250次操作后总是会出错。当我尝试使用stmt->reset时,它对我起作用了。