Seit der Version PHP 5.1 gibt es in PHP zusätzlich zu den Standardfunktionen von MySQL auch die PHP Data Objects (PDO). Das ist eine PHP-Erweiterung, mit der man sehr schnell in einheitlicher Weise auf verschiedene Datenquellen zugreifen kann.

Ähnlich wie beim bekannten und weit verbreiteten Repository PEAR werden dabei die spezifischen Zugriffe auf die verwendete Datenbank durch PDO gekapselt und sind damit transparent. PDO ist aber im Gegensatz zu PEAR eine rein binäre Erweiterung und deshalb auch deutlich schneller. PDO unterstützt zurzeit die Datenbanken MySQL, SQLite, PostgreSQL, MS SQL Server, Oracle, DB2, Firebird und auch ODBC. Dabei braucht allerdings jeder Datenbanktyp seinen spezifischen Treiber, sonst funktioniert es nicht.

Eine Datenbankverbindung kann man über PDO mit folgendem Code öffnen, die Daten auslesen und listen und dann wieder schließen:

$db = new

PDO(‚mysql:host=localhost;dbname=meinedatenbank‘, ‚user‘, ‚passwort‘);

$sql = $db->prepare(„SELECT * FROM meinetabelle“);

$sql->execute();

while ($row = $sql->fetch()) {

echo $row[id].” “.$row[name].“ <br /> “;

}

$sql 0 NULL;

$db = NULL;

Das kurze Beispiel-Script öffnet eine Verbindung zur MySQL-Datenbank meinedatenbank, liest alle Daten aus der Tabelle meinetabelle aus und listet dann die Datenfelder id und name aus jedem Datensatz auf. Danach wird die Datenbankverbindung sauber geschlossen.

Die Erweiterung PDO gestattet auch die Arbeit mit Prepared Statements, also vorkompilierten SQL-Kommandos. Dabei werden Platzhalter statt der dynamischen Daten verwendet, denen in einem zweiten Schritt die echten Werte zugewiesen werden. Das ergibt bei mehrmaliger Ausführung dieser Kommandos einen sehr deutlichen Gewinn an Performance. Aber auch bei einmaligen Aufrufen sind Prepared Statements den Methoden exec() und query() von der Geschwindigkeit her überlegen.

Die PDO-Technik bietet auch mehr Sicherheit, weil man damit SQL Injection relativ leicht verhindern kann. Darüber hinaus unterstützt PDO neben den benannten auch anonyme Parameter. In diesem Fall erzwingt die Reihenfolge der Parameter die Reihenfolge der Parameterwerte.

Welche Datenbank-Schnittstellen auf Ihrem System unterstützt werden, können Sie in der PHP-Konfigurationsdatei nachlesen oder sich mit dem Kommando phpinfo() ausgeben lassen.