Start · Sprachen · PHP · Referenz · ibase_blob_close

ibase_blob_close

Funktion

Schließt einen geöffneten InterBase/Firebird-BLOB-Handle und gibt bei schreibenden BLOBs die BLOB-ID zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

ibase_blob_close(resource $blob_handle): string|bool

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

Typ
string|bool
Beschreibung
Bei einem schreibenden BLOB (erstellt mit 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;
?>
BLOB erfolgreich gespeichert, 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);
?>
BLOB erfolgreich geschlossen. Gelesene Bytes: ...

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