Je pense que vous compliquez trop les choses avec votre boucle do/while.
Essayez plutôt une simple boucle while :
$pdo = /* connection stuff here */
$sql = "select 1; select 2; select 3; select 4;";
$statement = $pdo->query($sql);
while($rowset = $statement->fetchAll()){
//do stuff
$statement->nextRowset();
}
Cela continuera à boucler tant que l'ensemble de lignes n'aura pas de valeur fausse, ce qui devrait alors fonctionner exactement comme prévu.