Niet alles wat hier wordt gezegd is waar.
Er bestaan verschillende databases, zoals MySQL, PostGreSQL, Oracle en MSSQL, al deze databases zijn relationele databases. Met deze databases kan worden gecommuniceerd via SQL, de databases voldoen ongeveer (eigenlijk nooit helemaal) aan de SQL standaard (http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt).
De database is de eerste laag, en de laag die hier bovenop komt is dus SQL. Om deze SQL naar de database te sturen komt er nog een laag bij bovenop. Dit is de interessante laag: Hier kan worden gekozen tussen mysql_*, MySQLi en PDO.
mysql_* is een library die lang is gebruikt binnen PHP om met een MySQL database te communiceren. Echter, deze library is verouderd, en zijn opvolger is MySQLi.
MySQLi is dus op zichzelf GEEN database. Maar netzoals mysql_* een manier om met een MySQL database te communiceren. Nieuwe functies van MySQL worden wel door MySQLi ondersteund maar niet door mysql_*.
PDO is een library die ook met databases kan communiceren. Echter, PDO kan met veel meer databases communiceren zolang er een PDO driver voor die database is geïnstalleerd op de server waar jou PHP scripts op draaien. Dit is ook meteen het voordeel van PDO: Het houdt het simpel om van database te verwisselen.
L.Groot: PDO is inderdaad alleen beschikbaar in een OO versie. MySQL(i) kent zowel procedurele functions al een OO interface.
Echter, PDO kan dus nooit MySQLi ondersteunen. MySQLi is een extension in PHP om een database mee te benaderen netzoals PDO, en PDO kan enkel verschillende databases ondersteunen.