Start · Sprachen · PHP · Referenz · Pdo\Firebird

Pdo\Firebird

Klasse

PDO-Treiber-Klasse für Firebird-Datenbanken, die eine objektorientierte Schnittstelle zu Firebird/InterBase via PDO bereitstellt.

seit PHP 8.4.0 Kategorie: db

Signatur

class Pdo\Firebird extends PDO

Beschreibung

Pdo\Firebird ist eine spezialisierte Unterklasse von PDO, die den nativen PDO-Treiber für Firebird- und InterBase-Datenbanken kapselt. Seit PHP 8.4 werden datenbankspezifische PDO-Treiber als eigene Klassen bereitgestellt, sodass treiberspezifische Methoden und Konstanten klar voneinander getrennt sind.

Die Klasse wird wie die Standard-PDO-Klasse über deren Konstruktor instanziiert, wobei als DSN das Präfix firebird: verwendet wird. Damit lassen sich sowohl lokale als auch entfernte Firebird-Datenbankserver ansprechen. Alle Standard-PDO-Methoden wie query(), prepare(), exec() und Transaktionsverwaltung stehen zur Verfügung.

Typische Einsatzgebiete sind Legacy-Systeme, die auf Firebird oder InterBase aufsetzen, sowie neue Projekte, die von den ACID-konformen Transaktionen und der Mehrversionskontrolle (MVCC) von Firebird profitieren wollen. Gegenüber der älteren ibase_*-Erweiterung bietet PDO eine portable, objektorientierte API.

  • DSN-Format: firebird:dbname=hostname/port:/pfad/zur/datenbank.fdb
  • Unterstützt vorbereitete Anweisungen mit benannten (:name) und positionellen (?) Platzhaltern
  • Transaktionen werden über beginTransaction(), commit() und rollBack() gesteuert

Parameter

Name Typ Default Beschreibung
$dsn Pflicht string Der Data Source Name im Format firebird:dbname=host/port:/pfad/db.fdb. Für lokale Datenbanken genügt firebird:dbname=/pfad/zur/db.fdb.
$username string Benutzername für die Datenbankverbindung, z. B. SYSDBA.
$password string Passwort des Datenbankbenutzers.
$options array [] Assoziatives Array mit PDO-Treiberoptionen, z. B. PDO::ATTR_ERRMODE oder Firebird-spezifische Optionen wie Zeichensatz (charset).

Rückgabewert

Typ

Beispiele

Verbindung zu einer lokalen Firebird-Datenbank herstellen

<?php
try {
    $pdo = new Pdo\Firebird(
        dsn: 'firebird:dbname=localhost:/var/lib/firebird/data/meine_db.fdb;charset=UTF8',
        username: 'SYSDBA',
        password: 'masterkey',
        options: [
            PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        ]
    );

    $stmt = $pdo->query('SELECT FIRST 5 RDB$RELATION_NAME FROM RDB$RELATIONS');
    foreach ($stmt as $row) {
        echo trim($row['RDB$RELATION_NAME']) . PHP_EOL;
    }
} catch (PDOException $e) {
    echo 'Verbindungsfehler: ' . $e->getMessage();
}
RDB$PAGES RDB$DATABASE RDB$FIELDS RDB$INDEX_SEGMENTS RDB$INDICES

Vorbereitete Anweisung mit Transaktion

<?php
try {
    $pdo = new Pdo\Firebird(
        'firebird:dbname=localhost:/var/lib/firebird/data/shop.fdb;charset=UTF8',
        'SYSDBA',
        'masterkey',
        [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
    );

    $pdo->beginTransaction();

    $stmt = $pdo->prepare(
        'INSERT INTO BESTELLUNGEN (KUNDEN_ID, ARTIKEL, MENGE) VALUES (:kid, :art, :menge)'
    );
    $stmt->execute([
        ':kid'  => 42,
        ':art'  => 'Feuervogel-Tasse',
        ':menge' => 3,
    ]);

    $pdo->commit();
    echo 'Bestellung erfolgreich gespeichert.';
} catch (PDOException $e) {
    $pdo->rollBack();
    echo 'Fehler: ' . $e->getMessage();
}
Bestellung erfolgreich gespeichert.

// Wichtig · Fallstricke

Verfügbarkeit: Pdo\Firebird als eigene Klasse existiert erst ab PHP 8.4. In älteren PHP-Versionen wird der Firebird-Treiber über die generische PDO-Klasse mit dem DSN-Präfix firebird: angesprochen — die Funktionalität ist dieselbe, es gibt jedoch keine treiberspezifische Klasse.

Erweiterung erforderlich: Die PHP-Erweiterung pdo_firebird muss kompiliert oder als gemeinsam genutztes Modul geladen sein (extension=pdo_firebird in der php.ini). Zusätzlich wird die Firebird-Clientbibliothek auf dem Server benötigt.

Sicherheit: Verwende grundsätzlich vorbereitete Anweisungen mit Platzhaltern, um SQL-Injection zu verhindern. Speichere Zugangsdaten niemals im Quellcode — nutze Umgebungsvariablen oder Konfigurationsdateien außerhalb des Web-Roots.

Zeichensatz: Gib im DSN immer explizit einen Zeichensatz an (z. B. charset=UTF8), da Firebird standardmäßig NONE verwendet, was zu Kodierungsproblemen führen kann.