Signatur
Beschreibung
Der PDO Firebird DSN (Data Source Name) ist eine Zeichenkette, die alle notwendigen Verbindungsinformationen enthält, um über die PDO-Erweiterung eine Verbindung zu einem Firebird- oder Interbase-Datenbankserver herzustellen. Der DSN wird als erstes Argument an den PDO-Konstruktor übergeben.
Die DSN-Zeichenkette beginnt immer mit dem Präfix firebird:, gefolgt von Schlüssel-Wert-Paaren, die durch Semikolons getrennt sind. Das wichtigste Pflichtattribut ist dbname, das den Pfad zur Datenbankdatei (lokal oder remote) angibt. Für einen Remote-Host kann der Pfad in der Form hostname/port:pfad oder hostname:pfad angegeben werden.
Optionale Attribute sind charset (Zeichensatz, z. B. UTF8 oder ISO8859_1) und role (Datenbankrolle für die Verbindung). Benutzername und Passwort werden üblicherweise als zweites und drittes Argument an den PDO-Konstruktor übergeben, können aber auch im DSN als user und password angegeben werden (was aus Sicherheitsgründen nicht empfohlen ist).
Für den Einsatz wird die PHP-Erweiterung pdo_firebird benötigt, die entweder als shared object kompiliert oder statisch in PHP eingebunden sein muss. Firebird eignet sich besonders für eingebettete Datenbankanwendungen sowie als vollwertiger Client-Server-Datenbankserver.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $dbname Pflicht | string | Pfad zur Firebird-Datenbankdatei. Lokal z. B. /var/db/meine.fdb, remote z. B. hostname/3050:/pfad/zur/db.fdb oder hostname:C:\pfad\db.fdb unter Windows. |
|
| $charset | string | Zeichensatz der Verbindung, z. B. UTF8, ISO8859_1 oder WIN1252. Muss mit dem Zeichensatz der Datenbank übereinstimmen. |
|
| $role | string | Die SQL-Rolle (Datenbankrolle), unter der die Verbindung aufgebaut wird. Nützlich für feingranulare Rechteverwaltung in Firebird. |
Rückgabewert
Beispiele
Verbindung zu einer lokalen Firebird-Datenbank
<?php
$dsn = 'firebird:dbname=/var/db/meinedatenbank.fdb;charset=UTF8';
$user = 'SYSDBA';
$password = 'masterkey';
try {
$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Verbindung erfolgreich!" . PHP_EOL;
$stmt = $pdo->query('SELECT FIRST 5 * FROM MITARBEITER');
foreach ($stmt as $row) {
echo $row['NAME'] . PHP_EOL;
}
} catch (PDOException $e) {
echo "Verbindungsfehler: " . $e->getMessage() . PHP_EOL;
}
Verbindung zu einem entfernten Firebird-Server mit Rolle
<?php
// Remote-Verbindung auf Port 3050 mit Datenbankrolle
$dsn = 'firebird:dbname=db.example.com/3050:/opt/firebird/data/erp.fdb;charset=UTF8;role=BUCHHALTUNG';
$user = 'APPUSER';
$password = 'geheimesPasswort';
try {
$pdo = new PDO($dsn, $user, $password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);
$stmt = $pdo->prepare('SELECT RECHNUNGSNR, BETRAG FROM RECHNUNGEN WHERE KUNDENNR = ?');
$stmt->execute([42]);
$rechnungen = $stmt->fetchAll();
foreach ($rechnungen as $rechnung) {
printf("Rechnung %s: %.2f EUR\n", $rechnung['RECHNUNGSNR'], $rechnung['BETRAG']);
}
} catch (PDOException $e) {
echo "Fehler: " . $e->getMessage() . PHP_EOL;
}
// Wichtig · Fallstricke
Sicherheit: Benutzername und Passwort sollten niemals im DSN-String selbst hartcodiert werden, insbesondere nicht in versionierten Dateien. Verwende stattdessen Umgebungsvariablen oder externe Konfigurationsdateien mit eingeschränkten Zugriffsrechten.
SQL-Injection: Wie bei allen PDO-Verbindungen sollten Benutzereingaben ausschließlich über PDOStatement::bindParam() oder PDOStatement::execute() mit Platzhaltern eingebunden werden, niemals direkt in SQL-Strings interpoliert.
Erweiterung aktivieren: Die Erweiterung pdo_firebird muss in der php.ini mit extension=pdo_firebird aktiviert sein. Unter Windows lautet die DLL-Datei php_pdo_firebird.dll.
Firebird-Dialekte: Firebird unterstützt SQL-Dialekte 1, 2 und 3. Moderne Datenbanken sollten immer Dialekt 3 verwenden. Bei älteren Interbase-Datenbanken können Kompatibilitätsprobleme auftreten.