Záleží na tom, jakou databázi používáte, a na konfiguraci databáze.
Pro MySQL se musíte ujistit, že používáte dotazy s vyrovnávací pamětí. V PDO to nastavíte takto:
$myPdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
To znamená, že všechna data budou odeslána klientovi (není to stejné jako načtení všech v PHP).
Druhou (pravděpodobně horší) alternativou je otevřít nové připojení k databázi, kdykoli zjistíte, že je spuštěn dotaz se stále otevřenou sadou výsledků.
Normální mysql_query()
používá dotaz ve vyrovnávací paměti, takže bude fungovat s více sadami výsledků.