-  Version: pre alpha 0.1 
-  Date: 2008-03-06 
- 
-  Status: Draft (Inactive) 
This RFC aims to collect a set of ideas to improve PDO version 1. These ideas will hopefully end up in a set of concret feature requests and patches.
 
Introduction
PDO is a thin layer above native RDBMS interfaces. As such its focused on providing a unified API on the PHP level without getting too much into SQL abstraction. PDO provides a framework to make the development of RDBMS specific drivers for PDO easier.
 
Why do we need improvements to PDO?
PDO has become the de-facto standard for the development of PHP libraries that interact with RDBMS. As such developers have come to expect that PDO minimizes any portability differences to a minimum, while accepting that PDO will not solve most issues in the differences of the actual SQL syntax.
 
Common Misconceptions
A lot in PDO can be fixed without a new major version.
 
Proposal and Patch
-  Convenience features 
-  Higher level emulation features - 
-  Fix differences in behavior for data fetches (possibly add a compatibility mode in order to maintain BC) 
-  Add ability to manage connection session aspects like charset/collation, locale (datetime/currency format) 
- 
-  A class for administrative functionality which can come in handy for projects like phpMyAdmin. (possibly partially in userland) 
-  Nested transaction emulation via SAVEPOINTs 
-  Emulate scrollable cursors via buffered result sets 
 
-  Prepared statements - 
-  Fix differences in when bind/prepare issues an exception for an invalid bound value/parameter. 
-  Add ability to bind short binary values 
-  Improve the prepared statement emulation parser to better deal with quoted strings that contain things that look like a placeholder 
-  Make it possible to disable parsing and rewriting of placeholders and require the use of the given native syntax (:name, $name, ? etc.) 
-  Fix the problems with ODBC prepared statements when executing procedures on all platforms. 
-  Add support for PDO::PARAM_CLOB and generally work harder on making the LOB behavior more similar across the drivers (see  Bug 7943- ) 
-  Add support for datatypes like float and datetime/timestamp 
-  Do not force the use of prepared statements internally for simple queries without any parameters 
-  Optionally only use native prepared statement for SQL injection protection, but leverage the ability of some RDBMS to pass the [ http://pooteeweet.org/blog/1233-  statement and the values in a single call] 
 
-  Improve documentation 
-  Add support of multiple resultsets for mssql and odbc on all platforms. 
-  Add ability to retrieve the parameters set in the constructor (like DSN etc.) 
-  Add ability to determine the state of the connection/transactions (as well as the ability to reconnect) 
-  Make sure PDO classes implement interfaces so that frameworks can use it as a generic data access interface and implement native driver versions of it if needed (esp. PDOStatement). 
-  OCI8 has some persistent connection tuning parameters like timeout, max_connections, ... Make that generic and consistent in PDO. 
-  Improved Quoting 
-  Improved error handling and debugging - 
- 
-  For consistency it would be good to clear errors on every call and provide facility to expose multiple notices/errors that have occurred within a transaction 
-  Throw an exception if a fetch method is call on a statement that has not been executed at least once 
-  Expand support for SQLSTATE error codes to ensure that all drivers return more or less compatible error codes 
 
-  Full blown Metadata APIs ala JDBC (important for higher-level DB layers). (possibly partially in userland) 
-  Test suite which DB driver authors can use for compliance testing. 
 
Rejected Features
More about PDO
References
Changelog