Lester Caine - 2009-11-14

I'm just posting this for reference so that we have somewhere to monitor activity relating to the use of PDO. I've made no secret of the fact that I do not like PDO, but this has been purely because it's original intentions where not defined well enough. The result is that it's use is currently restricted to a sub set of databases and a sub set of facilities.

Currently the whole future of PDO is under review on the PHP development list with a view to changing the target a little, and actually being able to depricate the legacy drivers, but currently even for MySQL and PostgreSQL, some facilities available in the native drivers can not easily be ported to PDO, and the MySQL developers are even working on extensions to their driver which in practice should be developed directly in PDO. Such things as asynchronous queries which could be added to any database via PDO.

While the impression has been given that PDO is the future, it's capabilities do not yet support that move. Personally I can't use the pdo_firebird driver because of the problems with streamed blobs which affect a number of databases. We use blobs as long strings in the same way that MySQL and PostgreSQL uses 'TEXT' fields, but these are treated differently by PDO :(

I hope that is explains in some part why I've done the strange move of porting 4.2.2 to ADOdb. It really was out of nececity for my own development path, and to be honest I've not given up on the idea that ADOdb replacing PDO in the future. The original intention was that PDO would 'sit at a lower level', but ADOdb has a similar extension which integrates the data layers into the PHP core. Had this been developed we would probably be a lot futher forward now and not having this discussion!

Other 'problems' that need to be solved before the firebird/oracle/interbase and other drivers can be dropped in favour of a PDO replacement can be found on the PDO developers list ….