何时关闭准备好的声明

Tar*_*rik 22 php prepared-statement

何时关闭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();
Run Code Online (Sandbox Code Playgroud)

我应该$stmt->close();在这里使用吗?

编辑:

PHP手册上写的内容以及手册中的一条评论说:

结束准备好的声明.mysqli_stmt_close()也释放语句句柄.如果当前语句具有挂起或未读结果,则此函数将取消它们,以便可以执行下一个查询.

评论:

如果你在循环中使用bind_param重复一个语句,依此类推,以便进行更大的操作.我认为用stmt-> close来清理它会很好.但它在aprox后总是出现错误.250次操作.当我尝试使用stmt-> reset时,它对我有用.

cwa*_*ole 10

这是一个很好的使用close,特别是因为你打算进行另一个查询.通过PDO语句和MySQLi语句,我发现在清洁方面的错误几乎总是最好的 - 它可以消除潜在的错误.

对于有250次操作的绅士......我不知道真正的用例是什么.为什么他需要不同时间查询数据库250?为什么他不能用250条记录查询数据库一次?或者,更有可能的是,他为什么不能用10条记录查询数据库25次?