Ja PDO
kan hämta två (eller fler) raduppsättningar, så länge databasen du använder stöder det. Jag tror MS SQL Server och MySQL båda stöder denna funktionalitet, men i skrivande stund SQLite inte.
Funktionen du vill ha är PDOStatement::nextRowset
Så i ditt exempel ovan kan du göra något i stil med;
$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 är helt rimligt att en enskild lagrad procedur returnerar mer än en raduppsättning.