Florian Herlings, freier Webentwickler aus Düsseldorf.

PHP Data Objects - Teil 1: Einführung

Zum Glück ist auch das Datenbank-Handling in PHP 5 gründlich überholt worden. Das alte Handling über die “mysql_*“-Funktionen hat dazu geführt, dass wohl jeder PHP-Entwickler irgendwann einmal einen Wrapper für diese Funktionen geschrieben hat um den eigentlich wichtigen Code zu verkürzen.

Die neuen PHP Data Objects (PDO) ermöglichen einen in PHP integrierten, objektorientierten Zugriff auf die Datenbank. Abgesehen vom Geschwindigkeitsvorteil bringen PDOs auch lange vermisste Funktionen wie echte Transaktionen, „prepared statements“ und persistente Verbindungen mit sich.

Benutzung

Um die Funktionalität von PDOs zu demonstrieren, versuchen wir einmal denselben Vorgang mit und ohne PDO auszuführen:

ohne PDO

Der „klassische“ Ablauf um Daten aus der MySQL-Datenbank zu ziehen läuft in etwa so ab:

In PHP sieht dies zum Beispiel so aus:

<?php 
$connection = mysql_connect('localhost', 'root', '');
if (!$connection) { 
  echo "Datenbankfehler: Die Daten konnten nicht gelesen werden.";
} else { 
  mysql_select_db('test001', $connection);
  $query = mysql_query('SELECT * FROM `guestbook`;', $connection);
  while ($entry = mysql_fetch_assoc($query)) { 
      echo '<div class="name">'.$entry['name'].' schrieb:</div>';
      echo '<div class="text">'.$entry['text'].'</div>';
      echo '<hr />';
  } 
}

mit PDO

PDO erleichtert die Arbeit mit der Datenbank deutlich. Der Ablauf verkürzt sich auf die Schritte:

In PHP sieht dies zum Beispiel so aus:

<?php 
try { 
  $connection = new PDO('mysql:host=localhost;dbname=test001', 'root', '');
  foreach ($connection->query('SELECT * FROM `guestbook`;') as $entry) { 
      echo '<div class="name">'.$entry['name'].' schrieb:</div>';
      echo '<div class="text">'.$entry['text'].'</div>';
      echo '<hr />';
  } 
} catch (PDOException $e) { 
  echo "Datenbankfehler: Die Daten konnten nicht gelesen werden.";
}

weitere Informationen

Diese erste Einführung soll vor allem verdeutlichen, dass die neuen PDO-Funktionen auf der einen Seite einfacher zu benutzen sind als die bekannten mysql_*-Funktionen und auf der anderen Seite zu deutlich eleganterem und kürzerem Code führen. In den folgenden Teilen soll es dann um die neuen Features gehen, die mit den „alten“ Funktionen nicht möglich waren.

Weitere Informationen finden sich wie gehabt auf php.net.