首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >何时关闭预准备语句

何时关闭预准备语句
EN

Stack Overflow用户
提问于 2011-07-09 06:52:30
回答 2查看 11.6K关注 0票数 23

什么时候关闭PHP中的预准备语句?

示例:

代码语言:javascript
复制
    $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清理一下比较好。但它总是在aprox之后出现错误而崩溃。250次操作。当我尝试使用stmt->reset时,它对我很有效。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-09 07:19:09

这是close的一个很好的用法,特别是当您计划进行另一个查询时。对于PDO语句和MySQLi语句,我发现在整洁方面犯错误几乎总是最好的--它消除了潜在的bug。

对于那些有250次手术的先生们...我看不出真正的用例是什么。为什么他需要查询数据库250次?为什么他不能用250条记录查询一次数据库?或者,更有可能的是,为什么他不能用10条记录查询数据库25次?

票数 10
EN

Stack Overflow用户

发布于 2020-11-11 09:19:53

我目前无法发表评论,所以我只是提供一个答案。当您运行查询数据库以获得结果的预准备语句时,它不会执行另一个查询,除非您删除它存储的当前结果。$result = $stmt->get_result()。其次,如果您需要保存第一个查询的结果以便以后使用它,那么我建议使用两个结果集。第一个存储第一次执行$stmt的结果,第二个存储第二次执行的结果。这可能不能直接回答这个问题,但它可能会对某些人有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6631364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档