Hauptmenü

Untermenü

PDO - Verbindungsaufbau

1. Der Konstruktor

... ist natürlich auch bei PDO vorhanden. Allerdings gibt es bei den Zugangsdaten eine Neuerung im Vergleich zu MySQL und MySQLi, denn die Angaben zum Server sind hier anders. Der Konstruktor lässt insgesamt vier Angaben zu. Das Schema sieht dabei so aus.


$db = new PDO([Server], [User], [Passwort], array [Optionen]);

2. Angaben zum Server

Konzentrieren wir uns nur mal auf die Wichtigsten. Wichtig dabei ist, dass alle Daten in einer Variablen abgelegt werden. Die Trennung erfolgt über ein Semikolon. Zuerst muss der Datenbanktyp angegeben werden. Dann kommt normalerweise der Host und anschließend die Datenbank. Die Reihenfolge der letzten beiden Angaben ist aber nicht zwingend vorgegeben.


$server 'mysql:host=localhost;dbname=datenbank';

Erläuterung

Die Angabe des Datenbanktyps benötigt PDO für den Verbindungsaufbau. Bei einem MS SQL Server wäre das ein mssql und beim Oracle-Monster ein oci. Da ich bisher aber immer nur mit MySQL zu tun hatte, kann ich leider keine Details zum Besten geben.

Da die Angaben zum Host und zur Datenbank keine vordefinierte Reihenfolge haben, muss man mit den "Variablen" host und dbname arbeiten. Beide Bezeichnungen sind festgelegt und dürfen nicht geändert werden!

3. Der schäbige Rest

User und Passwort

Das ist genau so wie bei der MySQL- beziehungsweise MySQLi-Erweiterung und bedarf keiner weiteren Erläuterung.

Die Optionen

... sind leider datenbankspezifisch und werden daher auch als Driver options bezeichnet. Das bedeutet, dass sie auf den jeweiligen Typ zugeschnitten und nicht allgemein verfügbar sind. Die Details dazu findet ihr hier unter den jeweiligen Datenbank. Ich konzentriere mich nur auf zwei MySQL-Beispiele, um euch das Prinzip zu zeigen. Ach ja, dabei handelt es sich um Konstanten. Das erklärt auch den Zugriff über PDO::Konstante.

MYSQL_ATTR_INIT_COMMAND

Hier kann man bereits beim Verbindungsaufbau etwas festlegen. Zum Beispiel die Zeichenkodierung.


array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'

MYSQL_ATTR_READ_DEFAULT_FILE

Liest die Konfigurationsdatei aus. Damit können bestimmten Angaben per SQL-Injection nicht überschrieben werden.


array(PDO::MYSQL_ATTR_READ_DEFAULT_FILE => '/etc/my.cnf'

4. Ein komplettes Beispiel

... könnte so aussehen.


$server   'mysql:dbname=datenbank;host=localhost; port=3333';
$user     'user';
$password 'pw';
$options  = array
            (
              PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
              PDO::MYSQL_ATTR_READ_DEFAULT_FILE => '/etc/my.cnf'
            );
$pdo      = new PDO($server$user$password$options);

5. Einbindung in andere Klassen

Das ist genau wie bei MySQLi überhaupt kein Problem.


class Db extends PDO
{

}

Die weitere Vorgehensweise sollte mittlerweile selbstverständlich sein. Ansonsten schaut euch mal das hier an.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt