Зависи коя база данни използвате и конфигурацията на вашата база данни.
За MySQL трябва да сте сигурни, че използвате буферирани заявки. В PDO го настройвате така:
$myPdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
Това означава, че всички данни ще бъдат изпратени на клиента (не е същото като извличането на всички в PHP).
Другата (вероятно по-лоша) алтернатива е да отворите нова връзка с база данни, когато откриете, че се изпълнява заявка с все още отворен набор от резултати.
Нормалният mysql_query()
използва буферирана заявка, така че ще работи с множество набори от резултати.