$stmt->close() vs $stmt->free_result()

2023-03-05php开发问题
2

本文介绍了$stmt->close() vs $stmt->free_result()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

在完成准备好的 mysqli 时,我试图澄清 $stmt->close()$stmt->free_result() 之间的区别强>声明.

I am trying to clarify the difference between $stmt->close() and $stmt->free_result() when finalizing a prepared mysqli statement.

到目前为止我使用:

$mysqli = new mysqli(host,user,password,database);
$stmt = $mysqli->prepare(sql statement);
[...]
$stmt->free_result();
$mysqli->close();

一切似乎都正常.

但我见过很多程序员使用 $stmt->close 而不是 $stmt->free_result().一旦我看到了他们两个:

But I've seen a lot of programmers use $stmt->close instead of $stmt->free_result(). And once I've seen both of them:

$stmt->free_result();
$stmt->close();
$mysqli->close();

那么我应该选择什么,在什么情况下以及为什么?

So what should I choose, under which circumstances and why?

推荐答案

$stmt->free_result() 释放与结果集相关的内存,而 $stmt->close() 释放与准备好的语句相关的内存.随后调用 $stmt->close() 将取消任何剩余的结果.

$stmt->free_result() frees up memory related to a result set, whereas $stmt->close() frees up memory related to a prepared statement. Subsequently calling $stmt->close() will cancel any result still remaining.

本质上,调用 $stmt->close() 将提供与调用 $stmt->free_result() 相同的效果,因为它取消了结果集以及.但是调用 $stmt->free_result() 不会清除准备好的语句使用的内存,在这种情况下你必须使用 $stmt->close().

In essence, calling $stmt->close() will provide the same effect as calling $stmt->free_result() since it cancels the result set as well. But calling $stmt->free_result() will not clear out the memory used by the prepared statement in which case you must use $stmt->close().

至于使用哪个 - 可能在某些情况下,您打算使用已初始化的准备好的语句,但不再需要您当前拥有的结果集.在这种情况下,您将等待调用 $stmt->close() 直到完成准备好的语句,然后调用 $stmt->free_result()在执行另一个语句之前.

As far as which one to use goes - there may be situations where you intend on using the prepared statement you have initialized, but are no longer in need of the result set you currently have. In such a case you would wait on calling $stmt->close() until you are done with the prepared statement and instead call $stmt->free_result() before executing another statement.

这篇关于$stmt->close() vs $stmt->free_result()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

PHP实现DeepL翻译API调用
DeepL的翻译效果还是很强大的,如果我们要用php实现DeepL翻译调用,该怎么办呢?以下是代码示例,希望能够帮到需要的朋友。 在这里需要注意,这个DeepL的账户和api申请比较难,不支持中国大陆申请,需要拥有香港或者海外信用卡才行,没账号的话,目前某宝可以...
2025-08-20 php开发问题
168

PHP通过phpspreadsheet导入Excel日期数据处理方法
PHP通过phpspreadsheet导入Excel日期,导入系统后,全部变为了4开头的几位数字,这是为什么呢?原因很简单,将Excel的时间设置问文本,我们就能看到该日期本来的数值,上图对应的数值为: 要怎么解决呢?进行数据转换就行,这里可以封装方法,或者用第三方的...
2024-10-23 php开发问题
287

mediatemple - 无法使用 codeigniter 发送电子邮件
mediatemple - can#39;t send email using codeigniter(mediatemple - 无法使用 codeigniter 发送电子邮件)...
2024-08-23 php开发问题
11

Laravel Gmail 配置错误
Laravel Gmail Configuration Error(Laravel Gmail 配置错误)...
2024-08-23 php开发问题
16

将 PHPMailer 用于 SMTP 的问题
Problem with using PHPMailer for SMTP(将 PHPMailer 用于 SMTP 的问题)...
2024-08-23 php开发问题
4

关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题
Issue on how to setup SMTP using PHPMailer in GoDaddy server(关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题)...
2024-08-23 php开发问题
17