Unabhängige Daten mit PHP und PDO

Datenbankabstraktion

MySQL, Firebird, SQLite - viele Datenbanken stehen zur Wahl. Da liegt es nahe, die eigene Anwendung unabhängig von der Datenbank zu entwickeln.

IT Professional Praxis Webseiten: Private Homepages mit HTML und PHP

© Archiv

IT Professional Praxis Webseiten: Private Homepages mit HTML und PHP

MySQL, Firebird, SQLite - viele Datenbanken stehen zur Wahl. Da liegt es nahe, die eigene Anwendung unabhängig von der Datenbank zu entwickeln.

Eine datenbankgetriebene Anwendung benötigt Methoden, um auf die Datenbank zuzugreifen. Für MySQL sorgen die PHP-Erweiterungen mysql und mysqli für die gute Verbindung. Setzt man dagegen auf SQLite, kommt die SQLite-Erweiterung zum Einsatz.So gibt es für PHP über ein Dutzend verschiedener Datenbankerweiterungen. Ihnen ist eines gemeinsam, sie verstehen sich nur mit ihrer eigenen Datenbank. Aber nicht nur die Funktionen oder Methoden der Datenbankerweiterung sind das Problem, auch bei SQLselbst gibt es deutliche Unterschiede.

Datenbankabstraktion mit PHP und PDO

© Archiv

Betroffen sind vor allem spezielle Datenbankfunktionen wie Transaktionen und Indizes, aber auch das Steuern von Zeichensätzen. Die Datenbank- abstraktion möchte vor allem den Unterschieden bei SQL und Transaktionen Abhilfe schaffen. Gegen funktionale Unterschiede aufseiten der Datenbank ist allerdings kein Kraut gewachsen.

Im Kern übernimmt eine Datenbank- abstraktionsklasse den Verbindungsaufbau zu den verschiedenen Datenbanken. Dafür stellt sie eine Schnittstelle zur Verfügung. Mittlerweile hat sich allerdings eine als Standardweg herauskristallisiert, die PDO (PHP Data Objects).

Aufbau

Die PDO sind seit PHP 5.1 im Standardumfang mit dabei. Außerdem sind sie komplett in C geschrieben, der Sprache, in der PHP selbst entwickelt ist. Der besondere Vorteil ist die höhere Performance gegenüber einer Abstraktionsebene in PHP. Und Performance kann man beim Konzept der Datenbankabstraktion immer brauchen, denn schließlich heißt Unabhängigkeit auch, dass man manche Datenbankspezifika nicht nutzen darf, die ansonsten für mehr Leistung sorgen.

Die PDO bestehen aus zwei Teilen: den eigentlichen Programmierschnittstellen und für jedes Datenbanksystem, das Sie einsetzen möchten, einem separaten Treiber. Zentraler Code ist außerdem in der Schnittstelle selbst zusammengefasst. So werden auch Aktualisierungen recht einfach möglich.

Nun ist natürlich die Frage, für welche Systeme es Treiber gibt. Die Antwort heißt, für so gut wie alle. Hier die Wichtigsten:

•MySQL 3.x/4.x •SQLite 2 und SQLite 3 •PostgreSQL •Microsoft SQL Server •IBM Informix •Firebird •Oracle Call Interface •Über ODBC v3 zu IBM DB2, Access

Einrichtung

Ab PHP 5.1 sind die PDO schon mitgeliefert. Allerdings müssen sie bei der Konfiguration eingebaut werden. Unter Linux heißt das, dass Sie die PDO im configure-Kommando aktivieren müssen. Dazu benötigen Sie noch den Datenbanktreiber für ihre Datenbank. Im Beispiel ist das SQLite:

./configure --enable-pdo --enable-
pdo-sqlite

Auf vielen Systemen sind die PDO schon installiert. Sie sollten das zuerst mit phpinfo() nachprüfen. Die Dokumentation schlägt vor, die PDO als Shared Module zu installieren:

./configure --with-zlib --enable-
pdo=shared

Hier wird die zlib-Bibliothek benötigt. Außerdem müssen Sie dann die Erweiterungen in der php.ini aktivieren:

extension=pdo.so

Unter Windows ist die PDO eine DLL, die gleich mitgeliefert wird. Die einzelnen Datenbanktreiber sind ebenfalls DLLs. Beide müssen Sie in der php.ini aktivieren, indem Sie die folgenden Zeilen auskomentieren oder einfügen:

extension=php_pdo.dll
extension=php_pdo_mysql.dll
extension=php_pdo_mssql.dll

Wichtig ist: Zuerst den PDO-Treiber laden, dann die Datenbanktreiber. Manche Datenbanktreiber können auch noch bestimmte Bibliotheken benötigen. In Paketen wie XAMPP ist die PDO meist schon aktiviert. Für PHP 5.0 gibt es die PDO als separaten Download von . Die Installation erfolgt über den PEAR-Installer:

pear install pdo

Anschluss

Im ersten Schritt geht es nun um den Anschluss an eine Datenbank. Ausgangsbasis für die hier gezeigten Versuche ist eine einfache Datenbank mit drei Tabellen. Sie speichert Artikel und News. Zu den Artikeln werden die entsprechenden Autoren mit abgelegt. Ebenso bei den News.

CREATE TABLE IF NOT EXISTS 'artikel'(
'id' int(11) NOT NULL,
'inhalt' longtext NOT NULL,
'bild' blob,
'autoren_id' int(11) NOT NULL,
PRIMARY KEY ('id'))
CREATE TABLE IF NOT EXISTS 'autoren'(
'id' int(11) NOT NULL,
'name' varchar(255) NOT NULL,
PRIMARY KEY ('id') )
CREATE TABLE IF NOT EXISTS 'news' (
'id' int(11) NOT NULL,
'text' longtext NOT NULL,
'headline' varchar(255) NOT NULL,
'autoren_id' int(11) NOT NULL,
PRIMARY KEY ('id') )

Zum Testen kann diese Tabellenstruktur in einer MySQL-Datenbank, in einer SQLite-Datenbank und in einer MS-SQL-Server-Datenbank landen. Für einen einfachen Test reicht allerdings auch eine einzige Datenbank- Art aus. Wenn die Datenbank oder die Datenbanken stehen, befüllen Sie die Tabellen noch mit Dummy-Daten.

Mehr zum Thema

Youtube Sperre umgehen GEMA
Videos freischalten

So umgehen Sie die GEMA-Sperre bei Youtube. Was Sie dazu brauchen, und wie es am einfachsten geht.
Neue Fritzboxen unterstützen den AC-Standard.
WLAN-Geschwindigkeit verdoppeln

Mehr WLAN-Geschwindigkeit: Mit dem WLAN-Standard 802.11ac und den richtigen Geräten und Einstellungen verdoppeln Sie den Datendurchsatz.
Netflix auf dem TV
Programm in der Übersicht

Welche Filme und Serien gibt es bei Netflix eigentlich zu sehen? Was ist neu im Streaming-Angebot? Diese Antworten helfen weiter.
Netflix
Streaming

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.
E.T. – Der Außerirdische
Vorschau auf Film- und Serien-Highlights

Amazon Prime Instant Video lockt im Dezember 2016 mit Film-Highlights wie "E.T.", "Fast & Furious 7" und der Serie "Ku’damm 56​".