PDO being unstable, at least: experimental, is said to be so by ZEND. I don't know whether this is an official thing, but (since living most of the year in Tel Aviv) I have some friends with Zend, and we're talking pretty often about PHP design issues.
As for an alternative, this is not easy to put. In general, "MVC" at first glance sounds very nice, but a (so called) model-view-controller approach is actually impossible to implement with "pure (no, not poor...) PHP. Whether the ZEND guys like to hear it or not: PHP has been, still is, and (most probably for a long time) will stay a PROCEDURAL language, so component development (which is what actually stands for "MVC") is a) tidious and b) not fully implementable.
- Alternative: With the rise of release 5 (thus as PHP started to show up with real OOP patterns, such as encapsulation thru different access methods, etc.), I developed my own "framework". I preferred this to using that (oversized and slow) stuff like PEAR (and PDO). For two reasons: One is SPEED, the other is my need to KNOW what's going on within "my" objects. This framework is actually nothing but a simple a class wrapper around all those thousands of proprietary PHP-functions, but it allows for some abstraction. PART of this framework is the DB handling. I suggest u do the same. That way you can use those fast mysql_XXX, psql_XXX and whatever functions, NEVER re-coding, NO MATTER where this stuff is running on as long PHP5+ is installed.
Mine is split as follows, and maybe you like this "componenting":
1) xaSql - abstraction layer, returning appropriate grammar for (currently) MySql, PostgresSql, Oracle, IBM DB2 and SqlI.
2) xaSqlQuery - manages ALL query actions
3) xaSqlConnection - manages ALL db (persistent/simple) connection issues
4) xaSqlTransaction - transaction abstraction layer, necessary, because PHP (actually) does NOT support transactions (which, by the way, in 2008 feels like a bad joke)
5) xaSqlCondition - ...self explaining...
6) xaSqlStateDescription - necessary to "get away" from stateless web applications
7) xaSqlCol, xaSqlRow, and xaSqlTab - representing an (abstract) view of, as the name says, columns, rows, and tables, and
8) xaSqlCommunicator - the glue that stands for any DB access' business logic.
In the beginning, this looks like a lot of work, but it pays out. Never ever worrying about drivers, different syntax, certain (non-)support, and so on. Also, instead of writing hundreds of lines of the same code just because of one or two small differences, you need three or four lines, and this is it.
Again, the only REAL alternative is: use a REAL programming language, which is, as we know, not always possible if that's aboput the internet...