首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysqli_free_result ()和mysqli_stmt_free_result()的区别和用法?

mysqli_free_result ()和mysqli_stmt_free_result()的区别和用法?
EN

Stack Overflow用户
提问于 2020-03-15 18:19:43
回答 2查看 190关注 0票数 1

这两种功能的区别和具体用例是什么?下面是我的发现:

mysqli_free_result -释放与结果关联的内存

mysqli_stmt_free_result -释放给定语句句柄的存储结果内存

举个例子就好了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-15 19:48:24

这是两个不同的函数,但您不需要使用它们中的任何一个。

mysqli_free_result

mysqli_free_result()$result->free()的过程等价物。它所做的就是取消变量的结果。对象仍然存在,但变得不可用。

代码语言:javascript
复制
$id = 1;
$stmt = $mysqli->prepare('SELECT * FROM student_detail WHERE ID=?');
$stmt->bind_param('s', $id);
$stmt->execute();
$result = $stmt->get_result();

$result->free();

var_dump($result->fetch_assoc()); // error

它还有两个别名。这4件事是一样的:

代码语言:javascript
复制
$result->free();
$result->close();
$result->free_result();
mysqli_free_result($result);

mysqli_stmt_free_result

做同样的事,但是用语句本身。它相当于$stmt->free_result()

代码语言:javascript
复制
$id = 1;
$stmt = $mysqli->prepare('SELECT * FROM student_detail WHERE ID=?');
$stmt->bind_param('s', $id);
$stmt->execute();
$result = $stmt->store_result();

$stmt->free_result();

var_dump($stmt->fetch()); // false

你可以假设,如果你发现自己需要使用它们中的任何一个,那就意味着你可能做错了什么。

例如,一些人声称,当您将结果释放后,它会为您的服务器节省内存。实际上,您应该以这样的方式封装您的数据库查询,使mysqli_result只在您需要的时候使用它。看一看我不久前写的一种方法:

代码语言:javascript
复制
public function safeQuery(string $sql, array $params = []): ?array {
    $stmt = $this->prepare($sql);
    if ($params) {
        $stmt->bind_param(str_repeat("s", count($params)), ...$params);
    }
    $stmt->execute();
    if ($result = $stmt->get_result()) {
        return $result->fetch_all(MYSQLI_BOTH);
    }
    return null;
}

它执行准备好的语句,获取结果,获取记录,只要需要,mysqli_result就会存活。

票数 3
EN

Stack Overflow用户

发布于 2020-03-15 18:43:56

它们是等价的,这首先取决于您是如何创建结果的。

如果使用准备好的语句,然后使用$stmt->store_result(),则可以使用$stmt->free_result()释放结果。

如果您执行像$result = $conn->query(...)这样的普通查询,您将使用$result->free_result()释放它。

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

https://stackoverflow.com/questions/60696177

复制
相关文章

相似问题

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