PDOStatement :: fetch()如何在内部工作?

时间:2015-12-03 06:05:30

标签: php database pdo

我到处都读到使用PDOStatement::fetch()意味着你不会耗尽内存,无论结果集有多大。所以这就引出了一个问题:行存储在哪里?

PHP必须在从数据库获取结果时将结果存储在某处。这些结果存储在哪里?或者,它们是否存储在数据库中,PHP每次都必须在数据库中查询下一行?

2 个答案:

答案 0 :(得分:1)

它类似于读取文件,打开流并逐个读取数据,除了数据库内部结构更复杂。

例如,查看$ driver_options PDO::prepare的描述,这样您甚至可以设置可滚动光标以控制阅读方向。

答案 1 :(得分:0)

PDOStatement::fetch会从您的查询中获取下一行。我不认为它不会耗尽内存(如果一行包含大量数据),因为您的数据将保存在内存中(请阅读Buffered and Unbuffered queries)。