从PDO语句获取的数据是否会消耗内存(如果未分配给变量)?

时间:2015-12-23 16:07:53

标签: php pdo

我刚回答this question,它使用以下代码:

...
$stmt->bindColumn("id", $alarmId);
if ($stmt->fetch(PDO::FETCH_ASSOC))
...

在试验之后,我了解到虽然在PHP文档的示例中使用了PDO::FETCH_BOUND,但bindColumn显然无论使用的获取样式如何都有效,因此看起来像{{1}这里没有意义,因为它没有分配给变量。

但这让我想知道,在没有实际将结果分配给任何内容的情况下,使用PDO::FETCH_ASSOC获取的效果是什么? (我知道PDO::FETCH_ASSOC的使用意味着在这个例子中,结果IS的一部分实际上被分配给了bindColumn,但我对短暂的关联数组会发生什么感兴趣。)它是否暂时存在在内存中,即使它没有分配给变量,或者如果没有赋值,PHP会忽略它吗?有没有办法测试这个?

1 个答案:

答案 0 :(得分:0)

PDO::fetch返回一个指向结果集中下一个项目的光标,其中包含一种generator,允许您一次迭代结果集一个项目。 PDO::fetchAll根据您选择的提取模式返回数字\关联数组中的数据集,这会消耗存储整个结果集所需的内存。