Jeg tror, du er over at komplicere tingene med din do/while loop.
Prøv en simpel while-løkke i stedet:
$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();
}
Dette vil fortsætte med at sløjfe, mens rækkesættet ikke har en falsk værdi, som så skulle fungere nøjagtigt, som du forventer.