in php ist es nicht möglich, einen Textblob > 32K einem update or insert- Statement zu übergeben. Stattdessen muss der blobcontent zu einem Blobobjekt gemacht werden, was dann einem parametrisierten Statement eingefügt wird:
Code: Alles auswählen
function data2blob($data, $aDB, $sql) {
$status = 'ok';
// einfügen von daten > 32K in einen blob geht nicht literal, daher so:
// muss auch transaktional sein und committed werden, sonst wird der blobimport von nachfolgenden transaktionen nicht gesehen
$tx = ibase_trans(IBASE_WRITE|IBASE_COMMITTED|IBASE_NOWAIT|IBASE_REC_VERSION, $aDB);
$blh = ibase_blob_create($tx);
ibase_blob_add($blh, $data);
$blob = ibase_blob_close($blh);
if (!is_string($blob)) {
// import failed
$status = 'blob-import gescheitert';
} else {
$prepared = ibase_prepare($aDB, $tx, $sql);
if (!ibase_execute($prepared, $blob)) {
$status = 'insert gescheitert';
}
else {
ibase_commit($tx);
}
}
return $status;
}
Grüße, Volker