Мисля, че прекалено усложнявате нещата с вашия цикъл do/while.
Опитайте вместо това с прост цикъл 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();
}
Това ще продължи да се повтаря, докато наборът от редове няма фалшива стойност, която след това трябва да работи точно както очаквате.