Ich denke, Sie verkomplizieren die Dinge mit Ihrer Do/While-Schleife.
Probieren Sie stattdessen eine einfache While-Schleife aus:
$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();
}
Dies wird die Schleife fortsetzen, während das Rowset keinen falschen Wert hat, der dann genau so funktionieren sollte, wie Sie es erwarten.