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