如何释放直接作为数组获取并存储在变量中的 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 结果?的主要内容,如果未能解决你的问题,请参考以下文章
如何防止存储在 List 中的 Stateful Widget 被释放?
如何从对象数组中获取特定数据并存储在js(vue js)中的新数组中