Signatur
Beschreibung
ibase_connect() stellt eine Verbindung zu einer Firebird- oder InterBase-Datenbankinstanz her. Die Funktion gehört zur InterBase-Erweiterung von PHP (ext/interbase bzw. ext/ibase) und ermöglicht den Zugriff auf Firebird/InterBase-Datenbanken mittels PHP. Die zurückgegebene Ressource wird von allen nachfolgenden Datenbankoperationen wie ibase_query() oder ibase_trans() verwendet.
Im Gegensatz zu ibase_pconnect() öffnet ibase_connect() bei jedem Aufruf eine neue, nicht persistente Verbindung. Wird dieselbe Kombination aus Datenbankpfad, Benutzername und Passwort mehrfach innerhalb eines Scripts aufgerufen, wird eine neue Verbindung erstellt — es sei denn, PHP erkennt eine identische bestehende Verbindung in der aktuellen Session.
Der Parameter $database kann ein lokaler Dateipfad zur Datenbankdatei sein oder eine Netzwerkangabe im Format hostname:/pfad/zur/datenbank.fdb bzw. hostname:c:\pfad\datenbank.fdb unter Windows. Der Zeichensatz ($charset) sollte dem in der Datenbank definierten Standardzeichensatz entsprechen, um Kodierungsprobleme zu vermeiden.
Hinweis: Die InterBase/Firebird-Erweiterung wurde in PHP 8.0 aus dem PHP-Kern entfernt und steht seither als PECL-Paket (ibase) bereit. Für neue Projekte empfiehlt sich die Verwendung der Firebird PDO-Erweiterung als modernere Alternative.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $database | string | Pfad zur Datenbankdatei auf dem Server oder Netzwerkangabe im Format hostname:/pfad/datei.fdb. Leer lässt die Erweiterung den Standardwert aus der PHP-Konfiguration verwenden. |
|
| $username | string | Datenbankbenutzername. Wird kein Wert angegeben, wird der Wert aus ibase.default_user in der php.ini verwendet. |
|
| $password | string | Passwort des Datenbankbenutzers. Wird kein Wert angegeben, wird der Wert aus ibase.default_password in der php.ini verwendet. |
|
| $charset | string | Zeichensatz, der für die Verbindung verwendet werden soll, z. B. UTF8 oder WIN1252. Sollte mit dem Datenbankzeichensatz übereinstimmen. |
|
| $buffers | int | 0 | Anzahl der Datenbankpuffer, die dem serverseitigen Cache zugewiesen werden. Bei 0 verwendet der Server seinen Standard. |
| $dialect | int | 3 | SQL-Dialekt für die Verbindung (1, 2 oder 3). Dialekt 3 ist der Standard für moderne Firebird-Datenbanken. |
| $role | string | Optionale SQL-Rolle, die beim Verbindungsaufbau aktiviert werden soll. Die Rolle muss dem Benutzer zugewiesen sein. | |
| $sync | int | 0 | Reservierter Parameter für zukünftige Verwendung. Sollte auf 0 belassen werden. |
Rückgabewert
false zurückgegeben.Beispiele
Einfache Verbindung zu einer lokalen Firebird-Datenbank
<?php
$host = 'localhost';
$dbPath = '/var/lib/firebird/data/meinedaten.fdb';
$user = 'SYSDBA';
$password = 'masterkey';
$conn = ibase_connect($host . ':' . $dbPath, $user, $password, 'UTF8');
if ($conn === false) {
die('Verbindung fehlgeschlagen: ' . ibase_errmsg());
}
$result = ibase_query($conn, 'SELECT FIRST 5 * FROM MITARBEITER');
while ($row = ibase_fetch_assoc($result)) {
echo $row['NAME'] . ' – ' . $row['ABTEILUNG'] . PHP_EOL;
}
ibase_free_result($result);
ibase_close($conn);
Verbindung mit Fehlerbehandlung und SQL-Rolle
<?php
$dbString = '192.168.1.10:/opt/firebird/dbs/firma.fdb';
$conn = ibase_connect(
$dbString,
'BENUTZER1',
'geheimesPasswort',
'UTF8',
0,
3,
'LESE_ROLLE'
);
if (!$conn) {
$fehler = ibase_errmsg();
error_log('Firebird-Verbindungsfehler: ' . $fehler);
http_response_code(503);
exit('Datenbankverbindung konnte nicht hergestellt werden.');
}
echo 'Verbunden mit Rolle LESE_ROLLE.' . PHP_EOL;
// Abfrage ausführen ...
ibase_close($conn);
// Wichtig · Fallstricke
Deprecation / Entfernung: Die ibase_*-Funktionen wurden mit PHP 8.0 aus dem PHP-Kern entfernt. Sie sind seither nur noch über das PECL-Paket ibase verfügbar. Für neue Projekte sollte die Firebird PDO-Erweiterung verwendet werden.
Sicherheit: Zugangsdaten (Benutzername und Passwort) sollten niemals hartcodiert im Quellcode stehen. Verwende Umgebungsvariablen oder eine externe Konfigurationsdatei außerhalb des Web-Roots. Benutzereingaben dürfen niemals direkt in SQL-Abfragen eingebaut werden — nutze stets parametrisierte Abfragen mit ibase_prepare() und ibase_execute().
Persistente Verbindungen: Für lang laufende Anwendungen kann ibase_pconnect() eine persistente Verbindung herstellen, die über mehrere Script-Aufrufe hinweg wiederverwendet wird. Dies reduziert den Verbindungsaufbau-Overhead, kann aber zu Problemen führen, wenn die Verbindung im Hintergrund getrennt wurde.