PDO - Vorwort
1. PHP Data Objects
Das ist der vollständige Name für PDO. Und genau wie MySQL und MySQLi ist es eine Erweiterung für den Zugriff auf Datenbanken. Allerdings gibt es hier ein paar Features, die neu sind. Hinzu kommen noch ein paar gravierende Unterschiede zu den beiden anderen Erweiterungen.
2. Alte Zöpfe
... in PHP wurden bereits mit MySQLi abgeschnitten. Allerdings fehlte den Entwicklern wohl der Mut, um einen radikalen Schnitt beim Datenbankzugriff vorzunehmen. Das Ergebnis war ein ziemlich fauler Kompromiss zwischen prozeduraler und objektorientierter Zugriffsmöglichkeit. Mit PDO wollte man nun diese Schwachpunkte beseitigen, was im Großen und Ganzen auch gelungen ist.
Ganz wichtig!
PDO ähnelt in vielen Dingen MySQLi, vor allem, was die Funktionalitäten angeht. Darum sollte ihr euch vorher erst mal mit der entsprechenden Theorie zu MySQLi auseinandersetzen, bevor ihr hier weitermacht. Denn hier geht es nur um die Unterschiede. Außerdem wiederhole ich mich nicht gerne. Nur wenn es um diesen Satz geht.
3. Die Vorraussetzungen
Sind fast identisch mit denen von MySQLi.
- PHP 5 (ab 5.1 aufwärts standardmäßig vorhanden, bei 5.0 als PECL-Erweiterung verfügbar)
- MySQL-Server 4.1 oder höher (am Besten 5.x)
- Aktivierte PDO-Unterstützung
Verfügbarkeit
Nehmt das allseits bekannte phpinfo()
. Wenn ihr folgenden Abschnitt seht, so ist PDO verfügbar, ansonsten müsst ihr es
installieren.
4. Unterschiede zur MySQL- und MySQLi-Erweiterung
- PDO kann man nur objektorientiert nutzen. Die rein prozedurale Vorgehensweise ist hier nicht mehr möglich.
- Verbesserte Nutzung von Prepared Statements.
- Zugriff auf unterschiedliche Datenbanksysteme.
5. Die Sache mit den unterschiedlichen Datenbanksystemen
Dieses neue Feature ist ein echter Segen. Früher benötigte man für jedes gottverdammte Datenbanksystem eine eigenen Erweiterung, um damit zu kommunizieren. Bei PDO kann man darauf endlich verzichten.
Wenn
... man die entsprechenden Treiber zur Verfügung hat. Und nun kommen wir zur ersten schlechten Meldung. Laut der aktuellen(?) Doku werden derzeit nur folgende Systeme unterstützt. Beim Rest steht das derzeitige Entwicklungsstadium immer noch auf "experimentell".
- CUBRID (was immer das sein mag)
- IBM DB2
- Informix
- MySQL
- ODBC
- PostgreSQL
- SQLite
- Microsoft SQL Server (ab Version 2005)
Wenn ihr wissen wollt, welche Datenbanksysteme unterstützt werden, so schaut euch die Ausgabe des phpinfo()
an. In der Spalte
enabled
könnt ihr es dann sehen.
Obacht!
PDO stellt nur eine Abstraktionsschicht für den Zugriff auf unterschiedliche Datenbanksysteme dar. Sobald es um SQL-Statements geht, ist hängen im Schacht. Vulgo, PDO schafft den Zugang zu einem Datenbankserver, kümmert sich aber nicht um die Abfragen.
Ein Beispiel
Wenn man auf eine MYSQL-Datenbank beim Query ein LIMIT 0, 10
loslässt, so wird das bei einer Datenbank des MS SQL Servers
unweigerlich zu einem Fehler führen, da man dort ein TOP
benötigt. Da bedarf es einer zusätzliche Abstraktionsschicht wie
zum Beispiel Doctrine.
6. Über dieses Tutorial
Ich werde hier nicht auf jeden Mäusefurz eingehen, sonder mich darauf beschränken, euch das Prinzip und die wichtigsten Möglichkeiten zu zeigen. Einen kompletten Überblick über PDO findet ihr hier.
Bitte
... arbeitet euch zuvor durch das Thema Advanced MySQL. Denn ohne dieses Wissen werdet ihr einige Punkte nicht begreifen.