我到處讀到使用PDOStatement::fetch()
意味着不會耗盡內存,無論結果集多大。所以這引出了一個問題:行存儲在哪裏?PDOStatement :: fetch()如何在內部工作?
PHP必須將結果存儲在某個地方,當它從數據庫中獲取它們時。這些結果存儲在哪裏?或者,它們是否存儲在數據庫中,並且PHP每次都必須爲數據庫查詢下一行?
我到處讀到使用PDOStatement::fetch()
意味着不會耗盡內存,無論結果集多大。所以這引出了一個問題:行存儲在哪裏?PDOStatement :: fetch()如何在內部工作?
PHP必須將結果存儲在某個地方,當它從數據庫中獲取它們時。這些結果存儲在哪裏?或者,它們是否存儲在數據庫中,並且PHP每次都必須爲數據庫查詢下一行?
它類似於讀取文件,您打開一個流並逐個讀取數據,除了數據庫內部是一種更復雜的方式。
例如,請查看$ driver_options PDO::prepare的說明,以便您甚至可以設置可滾動光標以控制閱讀方向。
PDOStatement::fetch將從您的查詢中獲得下一行。我認爲它不會耗盡內存(如果一行包含大量數據),因爲您的數據將保存在內存中(請參閱Buffered and Unbuffered queries)。