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


How does PDOStatement::fetch() work internally?

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

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

这类似于读取文件,打开流并逐段读取数据,只是数据库内部更复杂。

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

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