phpbar.de logo

Mailinglisten-Archive

[php] PHP => IB6.5 BLOB SELECT & INSERT

[php] PHP => IB6.5 BLOB SELECT & INSERT

Heiko Ziebell php_(at)_phpcenter.de
Sat, 24 Aug 2002 16:17:25 +0200


Hey zusammen ...

Vielleicht erhalte ich hier für mein Problem eine Hilfestellung in
Zusammenhang mit PHP und InterBase. In meiner IB DB habe ich ein BLOB Feld
als "TYPE 1 SEGMENT SIZE 120" deklariert. Nun möchte ich eine etwas doch
größere Datenmenge (TEXT) aus meinem PHP Script dort speichern bzw. updaten.

Leider kommen die Daten in der DB nicht so an (MENGE), wie ich sie im PHP
Script abgeschickt habe. InterBase speichert immer nur eine bestimmte Menge
von Daten. An IB oder dem FeldType liegt es selber nicht, da ich in der IB
Console meine Daten rechtwohl speichern kann.

Hier mein Script:
//----------------------------------//
$DB = ibase_pconnect("server:g:\\Database\\MAIN.GDB","sysdba",
"masterkey" );

$blob_id = ibase_blob_create();
ibase_blob_add($blob_id, $blob_data);
$blob_id_str = ibase_blob_close($blob_id);
$sth = ibase_prepare('INSERT INTO cms_cache_content (HASH,CONTENT,IDENT)
VALUES (?,?,?)');
$trans=ibase_trans();
ibase_execute($sth, '$hash', $blob_id_str, '$ident');
ibase_free_query($sth);
ibase_commit($trans);
ibase_close($DB);
//----------------------------------//

$blob_data ist ein String mit mehreren Bytes!

Zerlege ich nun diesen String in mehrere Teile, werden die Daten korrekt
gespeichert. Das ist Programmtechnisch aber nicht immer machbahr und ich
somit, mit dieser Lösung nichts anfangen kann.
eg:
ibase_blob_add($blob_id, $blob_data1);
ibase_blob_add($blob_id, $blob_data2);
ibase_blob_add($blob_id, $blob_data3);

Ein anderer Lösungsansatz den ich getestet habe ist ein "INSERT" mit "BLOB
FELD" null und ein anschließendes Update, bringt aber auch wieder das selbe
Problem. So bin ich mit meinem Latein am Ende und hoffe auf eure Hilfe.

Warum speichet nun PHP nicht alle Daten?

BS: XP/IIS & LINUX SUSE 8.0/Apache => PHP 4.2.1 & 4.2.2

Vielen Dank HEIKO


php::bar PHP Wiki   -   Listenarchive