Start · Sprachen · PHP · Referenz · cubrid_lob2_bind

cubrid_lob2_bind

Funktion

Bindet ein LOB-Objekt (BLOB oder CLOB) als Parameter an ein vorbereitetes CUBRID-Statement.

seit PHP 8.4.1 Kategorie: db

Signatur

cubrid_lob2_bind(resource $req_identifier, int $bind_index, mixed $bind_value, string $bind_value_type = ''): bool

Beschreibung

cubrid_lob2_bind() wird verwendet, um LOB-Daten (Large Objects) an Platzhalter in einem vorbereiteten CUBRID-Statement zu binden. CUBRID unterstützt zwei LOB-Typen: BLOB (Binary Large Object) für Binärdaten wie Bilder oder Dateien, und CLOB (Character Large Object) für große Textmengen.

Der Parameter $bind_value kann entweder ein LOB-Handle sein (erzeugt mit cubrid_lob2_new()), ein Dateiname als String (die Datei wird dann als LOB-Inhalt verwendet) oder direkte Daten als String. Der Typ des LOB-Wertes wird über $bind_value_type gesteuert: Mögliche Werte sind 'BLOB' und 'CLOB'.

Diese Funktion ist besonders sinnvoll, wenn große Dateiinhalte oder Textmengen in die Datenbank geschrieben werden sollen, ohne den gesamten Inhalt in den PHP-Speicher laden zu müssen. Sie arbeitet in Kombination mit cubrid_prepare() und cubrid_execute().

Der Bind-Index beginnt bei 1 (nicht 0) und entspricht der Position des jeweiligen ?-Platzhalters im SQL-Statement.

Parameter

Name Typ Default Beschreibung
$req_identifier Pflicht resource Das Request-Handle, das von cubrid_prepare() zurückgegeben wurde.
$bind_index Pflicht int Die Position des Platzhalters (?) im SQL-Statement, beginnend bei 1.
$bind_value Pflicht mixed Der zu bindende Wert. Kann ein LOB-Handle (von cubrid_lob2_new()), ein Dateiname als String oder direkte Daten als String sein.
$bind_value_type string Der LOB-Typ des zu bindenden Wertes: 'BLOB' für Binärdaten oder 'CLOB' für Zeichendaten. Wird dieser Parameter weggelassen, wird der Typ automatisch aus dem LOB-Handle ermittelt.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, oder false im Fehlerfall (z. B. ungültiger Handle, falscher Index oder inkompatibler Typ).

Beispiele

BLOB-Datei an ein INSERT-Statement binden

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

// LOB-Objekt erstellen und mit Dateiinhalt füllen
$lob = cubrid_lob2_new($conn, 'BLOB');
cubrid_lob2_import($lob, '/var/data/bild.jpg');

// Statement vorbereiten
$req = cubrid_prepare($conn, 'INSERT INTO bilder (name, daten) VALUES (?, ?)');

// Normalen String-Parameter binden
cubrid_bind($req, 1, 'bild.jpg');

// LOB-Objekt binden
cubrid_lob2_bind($req, 2, $lob, 'BLOB');

// Statement ausführen
cubrid_execute($req);

cubrid_lob2_close($lob);
cubrid_disconnect($conn);

echo 'Bild erfolgreich gespeichert.';
?>
Bild erfolgreich gespeichert.

CLOB mit direktem Textinhalt binden

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

$grosserText = str_repeat('Lorem ipsum dolor sit amet. ', 5000);

// CLOB-Objekt anlegen
$clob = cubrid_lob2_new($conn, 'CLOB');
cubrid_lob2_write($clob, $grosserText);

// Statement vorbereiten und CLOB binden
$req = cubrid_prepare($conn, 'INSERT INTO artikel (titel, inhalt) VALUES (?, ?)');
cubrid_bind($req, 1, 'Testartikel');
cubrid_lob2_bind($req, 2, $clob, 'CLOB');

cubrid_execute($req);
cubrid_lob2_close($clob);
cubrid_disconnect($conn);

echo 'Artikel mit großem Text gespeichert.';
?>
Artikel mit großem Text gespeichert.

// Wichtig · Fallstricke

Achtung: Der Bind-Index beginnt bei 1, nicht bei 0. Ein häufiger Fehler ist die Verwendung von 0 als erstem Index, was zu einem Fehler führt.

Das LOB-Handle sollte nach der Verwendung stets mit cubrid_lob2_close() geschlossen werden, um Speicher- und Ressourcen-Leaks zu vermeiden.

Wenn $bind_value ein Dateiname (String) ist, muss $bind_value_type explizit angegeben werden, da PHP sonst nicht zwischen einem Dateinamen und direkten Daten unterscheiden kann.