Start · Sprachen · PHP · Referenz · PDO_FIREBIRD DSN

PDO_FIREBIRD DSN

Funktion

Der PDO-Firebird-DSN definiert die Verbindungszeichenkette, um mit <code>PDO</code> eine Verbindung zu einer Firebird-Datenbank herzustellen.

seit PHP 5.3.0 Kategorie: db

Signatur

firebird:dbname=...;charset=...;role=...

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

Typ

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 erfolgreich! Meier Müller Schmidt Schneider Fischer

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;
}
Rechnung 2024-0042: 1250.00 EUR Rechnung 2024-0087: 349.99 EUR

// 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.