Tôi nghĩ rằng bạn đang quá phức tạp hóa mọi thứ với vòng lặp do / while của mình.
Hãy thử một vòng lặp while đơn giản để thay thế:
$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();
}
Điều này sẽ tiếp tục lặp lại trong khi tập hợp hàng không có giá trị sai, sau đó sẽ hoạt động chính xác như bạn mong đợi.