Signatur
Beschreibung
ibase_close() beendet die Verbindung zu einer InterBase- oder Firebird-Datenbank, die zuvor mit ibase_connect() oder ibase_pconnect() geöffnet wurde. Alle noch offenen Transaktionen, die nicht explizit bestätigt oder zurückgerollt wurden, werden dabei automatisch zurückgerollt (Rollback).
Wird kein $connection_id übergeben, wird die zuletzt geöffnete Verbindung geschlossen. Dies entspricht dem Verhalten vieler anderer PHP-Datenbankextensionen und ist praktisch, wenn innerhalb eines Skripts nur eine einzige Verbindung aktiv ist.
Bei persistenten Verbindungen, die mit ibase_pconnect() erstellt wurden, hat ibase_close() keinen sofortigen Effekt – die Verbindung bleibt im Verbindungspool bestehen und wird erst am Ende des Prozesses wirklich getrennt.
Hinweis: Die gesamte ibase_*-Erweiterung (auch bekannt als InterBase-Extension) wurde mit PHP 8.0 aus dem PHP-Kern entfernt und ist seitdem nur noch als PECL-Paket verfügbar (pecl/ibase). Für neue Projekte wird empfohlen, auf die firebird_*-Funktionen oder PDO mit dem Firebird-Treiber umzusteigen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $connection_id | resource | null | Eine gültige InterBase-Verbindungsressource, die von ibase_connect() oder ibase_pconnect() zurückgegeben wurde. Wird dieser Parameter weggelassen oder auf null gesetzt, wird die zuletzt geöffnete Verbindung geschlossen. |
Rückgabewert
true zurück, wenn die Verbindung erfolgreich geschlossen wurde, oder false bei einem Fehler (z. B. wenn die übergebene Ressource ungültig ist).Beispiele
Einfaches Öffnen und Schließen einer InterBase-Verbindung
<?php
// Verbindung zur Datenbank herstellen
$connection = ibase_connect(
'localhost:/var/db/meine_datenbank.fdb',
'sysdba',
'masterkey'
);
if (!$connection) {
die('Verbindung fehlgeschlagen: ' . ibase_errmsg());
}
echo "Verbindung erfolgreich hergestellt.\n";
// Datenbankoperationen durchführen ...
$result = ibase_query($connection, 'SELECT * FROM kunden');
while ($row = ibase_fetch_object($result)) {
echo $row->KUNDENNAME . "\n";
}
ibase_free_result($result);
// Verbindung schließen
if (ibase_close($connection)) {
echo "Verbindung erfolgreich geschlossen.\n";
} else {
echo "Fehler beim Schließen der Verbindung.\n";
}
Mehrere Verbindungen explizit schließen
<?php
// Zwei Verbindungen zu verschiedenen Datenbanken öffnen
$conn1 = ibase_connect('localhost:/var/db/datenbank1.fdb', 'sysdba', 'masterkey');
$conn2 = ibase_connect('localhost:/var/db/datenbank2.fdb', 'sysdba', 'masterkey');
// Operationen auf beiden Datenbanken ...
// Verbindungen explizit in umgekehrter Reihenfolge schließen
ibase_close($conn2);
echo "Verbindung 2 geschlossen.\n";
ibase_close($conn1);
echo "Verbindung 1 geschlossen.\n";
// Wichtig · Fallstricke
Deprecation / Entfernung: Die ibase_*-Erweiterung wurde ab PHP 7.4 als deprecated markiert und mit PHP 8.0 vollständig aus dem PHP-Kern entfernt. Sie steht seitdem nur noch über PECL zur Verfügung. Für neue Projekte sollte stattdessen PDO mit dem Firebird-Treiber (PDO_FIREBIRD) verwendet werden.
Offene Transaktionen: Beim Schließen einer Verbindung werden alle noch nicht abgeschlossenen Transaktionen automatisch zurückgerollt. Es ist daher wichtig, alle Transaktionen vor dem Schließen der Verbindung explizit mit ibase_commit() zu bestätigen oder mit ibase_rollback() zurückzurollen, um Datenverlust zu vermeiden.
Persistente Verbindungen: Bei mit ibase_pconnect() erstellten persistenten Verbindungen hat ibase_close() keinen sofortigen Effekt; die Verbindung bleibt im Pool bestehen.