Das hängt davon ab, welche Datenbank Sie verwenden und von Ihrer Datenbankkonfiguration.
Für MySQL müssen Sie sicherstellen, dass Sie gepufferte Abfragen verwenden. In PDO stellst du das so ein:
$myPdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
Das bedeutet, dass alle Daten an den Client gesendet werden (nicht dasselbe wie das Abrufen aller Daten in PHP).
Die andere (wahrscheinlich schlechtere) Alternative besteht darin, immer dann eine neue Datenbankverbindung zu öffnen, wenn Sie feststellen, dass eine Abfrage mit noch geöffneter Ergebnismenge ausgeführt wird.
Der normale mysql_query()
verwendet eine gepufferte Abfrage, die mit mehreren Ergebnismengen funktioniert.