Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03435.jsonl.gz/1630

Einheit im Datenbank-Dschungel
Einheit im Datenbank-Dschungel
Während sich Entwickler bei den meisten Scriptsprachen über konsistente Datenbank-Interfaces freuen können, mit deren Hilfe man bei einem Wechsel der Datenbank schlimmstenfalls die SQL-Abfragen anpassen muss, sieht es diesbezüglich in der PHP-Welt etwas trister aus: Jede Datenbank-Extension verfügt über eigene Funktionen, die zum Teil erheblich in ihrem Funktionsumfang differieren und bezüglich Aktualität von «angestaubt» (ext/mysql) bis hin zu «taufrisch» (ext/mysqli und ext/sqlite) rangieren. Hat man nun auf eine bestimmte Datenbank wie MySQL gesetzt und möchte beispielsweise auf PostgreSQL umsteigen, müssen nicht nur einige SQL-Abfragen überarbeitet, sondern auch sämtliche mysql_*()-Funktionen durch ihre pg_*()-Entsprechungen ersetzt werden.
Alternative zur Alternative
Wollte man dies vermeiden, existierten bislang zwei Ansätze. Eine Möglichkeit bestand darin, einen Wrapper zu schreiben. Ein Wrapper sorgt für ein einheitliches Interface gegenüber den nativen Extensions und kann sich noch um die Input-Filterung und das Error-Handling kümmern. Die andere Möglichkeit war der Einsatz eines Abstraktions-Layers, der über die Funktionalität des Wrappers hinausgeht, indem er versucht, Inkompatibilitäten zwischen mehreren Datenbanksystemen auszugleichen. Mit PDO, das zum Funktionsumfang von PHP 5.1 gehören soll, steht in Zukunft eine weitere Möglichkeit zur Verfügung.
PDO, das für PHP Data Objects Interface steht, ist eine C-Extension, die von Wez Furlong, Marcus Börger, Ilia Alshanetsky und Georg Schlossnagle geschrieben wurde. Sie stellt eine einheitliche API für eine Reihe von spezifischen Datenbanktreibern dar, welche die Brücke zwischen Scriptsprache und Datenbankserver bilden. Die Ansteuerung der jeweiligen Datenbank erfolgt über einen Data Source Name (DSN), der dem PDO-Konstruktor übergeben wird:
$db = new PDO('mysql:host= <ip-pii>;dbname=test');
Möchte man statt MySQL einen MS-SQL-Server verwenden, braucht man nur den DSN zu ändern:
$db = new PDO('mssql:host= <ip-pii>;dbname=test');