如何释放直接作为数组获取并存储在变量中的 mysql 结果?

Posted

技术标签:

【中文标题】如何释放直接作为数组获取并存储在变量中的 mysql 结果?【英文标题】:How can I free mysql result straight fetched as an array and stored in a variable? 【发布时间】:2016-06-07 18:27:15 【问题描述】:

我非常喜欢语法:

$result = $db_connect->query("SELECT * FROM table")->fetch_assoc();

而不是更冗长

$query = $db_connect->query("SELECT * FROM table");
$result = $query->fetch_assoc();
$query->free();

我的问题是如何在案例 1 中从内存中释放结果?

换句话说:为变量分配新值会自动释放结果吗?

我在 stackExchange / Google 上搜索过,但没有成功...我发现这是一个有趣的问题。

【问题讨论】:

既然您使用的是面向对象的接口,请坚持下去。与程序风格混搭很乱。 好的,我编辑一下,谢谢建议)) 无法通过链接完成。 使用 unset($query); 【参考方案1】:

方法链(您的第一个示例)通过在前一个函数返回的对象上执行每个后续函数来工作。所以你可以做$db_connect->query("SELECT * FROM table")->fetch_assoc();,因为query()返回一个mysqli_result对象并且该对象支持fetch_assoc()方法。

fetch_assoc(),反过来,返回...

... 表示提取行的字符串关联数组 在结果集中,其中数组中的每个键代表的名称 结果集的列之一,如果没有更多行,则为 NULL 结果集。

因为这个结果是一个数组(或NULL)而不是一个对象,所以不能在它之后的链中添加更多的方法。

【讨论】:

以上是关于如何释放直接作为数组获取并存储在变量中的 mysql 结果?的主要内容,如果未能解决你的问题,请参考以下文章

如何查询/删除matlab 内存中的变量?

如何获取作为数组工作的存储过程输出参数?

如何防止存储在 List 中的 Stateful Widget 被释放?

如何从对象数组中获取特定数据并存储在js(vue js)中的新数组中

如何在 PowerShell 中将 curl 结果作为变量获取

golang中的传值或传引用