I'm not really a PHP guy, but I do have a couple of thoughts on this. First an explanation of what some of these things are might be in order. PDO is a PHP library (like mysqli or db2) it's definitely a php specific thing and sits on top of the database driver. ODBC is not Windows specific it's a common api for working with various data base servers and has drivers for all the common SQL servers (MSSQL, MySQL, Postgres, Oracle...). ODBC being an abstraction layer means you miss out on some database specific features. I'm not familiar with the LOB aspect of PDO, but based on what you listed above it sounds like that serves as a bonus for PHP rather than the database. Any common RDBMS will have support for data
types larger than 4K (binary data is the db is pretty common), but you generally don't want to load the whole object in memory on the application side (in PHP). I've not used the PHP streams api either, but streams are a concept that exists in most web programming languages and the concept is almost always around loading objects a piece at a time and sending it on.
So what you're left with:
- PDO is a PHP class for database abstractions
- PDO is supposedly the preferred library for accessing your DB in PHP
- PDO::PARAM_LOB provides and interface for streaming large amounts of data out of your DB without eating all your server's memory
Hope that helps.