Ja PDO
kan hente to (eller flere) rækkesæt, så længe databasen du bruger understøtter det. Jeg tror MS SQL Server og MySQL begge understøtter denne funktionalitet, men i skrivende stund SQLite ikke.
Den funktion, du ønsker, er PDOStatement::nextRowset
Så i dit eksempel ovenfor kan du måske gøre noget som;
$sth = $dbh->prepare("SELECT * FROM tb1 WHERE cond1;
SELECT * FROM tb2 WHERE cond2");
$sth->execute();
$rowset1 = $sth->fetchAll();
$sth->nextRowset();
$rowset2 = $sth->fetchAll();
print_r($rowset1);
print_r($rowset2);
Det er helt rimeligt, at en enkelt lagret procedure returnerer mere end ét rækkesæt.