Signatur
Beschreibung
ibase_blob_close() schließt einen zuvor mit ibase_blob_create() (schreibend) oder ibase_blob_open() (lesend) geöffneten BLOB-Handle in einer InterBase- oder Firebird-Datenbank. Die Funktion beendet die BLOB-Operation und gibt alle zugehörigen Ressourcen frei.
Wird ein schreibender BLOB (erstellt mit ibase_blob_create()) geschlossen, liefert die Funktion die zugehörige BLOB-ID als string zurück. Diese ID muss anschließend beim Einfügen oder Aktualisieren eines Datensatzes (z. B. via ibase_query()) als Parameterwert übergeben werden, damit der BLOB tatsächlich in der Datenbank gespeichert wird.
Wird ein lesender BLOB (geöffnet mit ibase_blob_open()) geschlossen, gibt die Funktion true bei Erfolg und false bei einem Fehler zurück.
Diese Funktion gehört zur ibase_*-Erweiterung (InterBase), die ab PHP 8.0 aus dem Kern entfernt wurde und seither als PECL-Paket (ibase) verfügbar ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $blob_handle Pflicht | resource | Ein BLOB-Handle, das zuvor mit ibase_blob_create() oder ibase_blob_open() erzeugt wurde. |
Rückgabewert
ibase_blob_create()): Gibt die BLOB-ID als string zurück, die zum Speichern in der Datenbank benötigt wird. Bei einem lesenden BLOB (geöffnet mit ibase_blob_open()): Gibt true bei Erfolg und false bei einem Fehler zurück.Beispiele
BLOB erstellen, befüllen und in Datensatz speichern
<?php
// Datenbankverbindung aufbauen
$dbh = ibase_connect('localhost:pfad/zur/datenbank.fdb', 'user', 'password');
// Binärdaten (z. B. Dateiinhalt) vorbereiten
$dateiinhalt = file_get_contents('/pfad/zur/datei.pdf');
// BLOB erstellen und befüllen
$blob = ibase_blob_create($dbh);
ibase_blob_add($blob, $dateiinhalt);
// BLOB schließen — gibt die BLOB-ID zurück
$blob_id = ibase_blob_close($blob);
// BLOB-ID in Datensatz speichern
ibase_query($dbh, 'INSERT INTO dokumente (name, inhalt) VALUES (?, ?)', 'beispiel.pdf', $blob_id);
ibase_close($dbh);
echo "BLOB erfolgreich gespeichert, ID: " . $blob_id;
?>
Vorhandenen BLOB lesen und schließen
<?php
// Datenbankverbindung aufbauen
$dbh = ibase_connect('localhost:pfad/zur/datenbank.fdb', 'user', 'password');
// Datensatz mit BLOB-Referenz abrufen
$result = ibase_query($dbh, 'SELECT inhalt FROM dokumente WHERE id = 1');
$row = ibase_fetch_object($result);
// BLOB öffnen und Inhalt lesen
$blob = ibase_blob_open($dbh, $row->INHALT);
$inhalt = '';
while ($chunk = ibase_blob_get($blob, 4096)) {
$inhalt .= $chunk;
}
// BLOB schließen — gibt true bei Erfolg zurück
$ergebnis = ibase_blob_close($blob);
if ($ergebnis === true) {
echo "BLOB erfolgreich geschlossen. Gelesene Bytes: " . strlen($inhalt);
} else {
echo "Fehler beim Schließen des BLOBs.";
}
ibase_close($dbh);
?>
// Wichtig · Fallstricke
Deprecation/Verfügbarkeit: Die ibase_*-Funktionen wurden in PHP 8.0 aus dem PHP-Kern entfernt. Für PHP 8.0 und höher muss die PECL-Erweiterung ibase bzw. firebird separat installiert werden. Für neue Projekte empfiehlt sich die Verwendung von PDO mit dem Firebird-Treiber (PDO_Firebird).
Wichtig: Bei schreibenden BLOBs muss die von ibase_blob_close() zurückgegebene BLOB-ID zwingend im zugehörigen INSERT- oder UPDATE-Statement verwendet werden. Ohne diesen Schritt wird der BLOB nicht dauerhaft in der Datenbank gespeichert. Außerdem sollte sichergestellt werden, dass alle Daten vor dem Schließen vollständig via ibase_blob_add() hinzugefügt wurden.