Homepage selbermachen 7.852 Themen, 35.619 Beiträge

Datenbank: Problem mit BLOB-Datentyp

DeathMasterIII / 4 Antworten / Baumansicht Nickles

hi!


ich arbeite derzeit mit Interbase und hab da jetzt ein Problem mit dem Datentyp BLOB. Ich will einen Text im BLOB abspeichern, aber irgendwie haut das nicht so hin wie ich mir das gedacht habe:
Ich versuche mit INSERT INTO dem Table einen Datensatz hinzuzufügen


ich krieg aber immer die Fehlermeldung "Warning: Conversation error from string "BLOB" in test.php on ...."


Da der Datentyp BLOB so ziemlich jeden Datentyp aufnehmen kann (String, Datei, Zeiger) und es in der PHP-Hilfe diverse Datenbankspezifische BLOB funktionen (ibase_blob_add(), base_blob_cancel(), ibase_blob_close(), ....) denke ich mal das man den BLOB vorher irgendwie anlegen muss, nur wie??? In der PHP Hilfe steht leider keine Beschreibung, und ich hab auch sonst nirgends was gefunden.


Da BLOB auch in MySQL Verwendung findet, dürfte das Vorgehen auch ziemlich gleich ablaufen.


mfg
DMIII

bei Antwort benachrichtigen
Heinz_Malcher DeathMasterIII „Datenbank: Problem mit BLOB-Datentyp“
Optionen

hmm wieso nimmst du nicht einfach text statt blob? welchen grund gibt es, blob text vorzuziehen?

bei Antwort benachrichtigen
DeathMasterIII Heinz_Malcher „hmm wieso nimmst du nicht einfach text statt blob? welchen grund gibt es, blob...“
Optionen

In Interbase gibts leider den Datentyp Text nicht :((
Und wenn ich des als VarChar abspeichere muss ich aufpassen dass ich nicht die 64KB Tablebegrenzung vom Interbase sprenge (jaja hab seeehr viel Text zu spiechern)

habs aber inzwischen eh heraus wies geht (www.php.net Onlinehilfe -> Bei der Offlinehilfe fehlen die Entwickler Notes ;))))):

Beschreiben:
$blobid = ibase_blob_create(); //Erzeugen von Blob
ibase_blob_add($blobid,$string); //Hineinschreiben
$blob = ibase_blob_close($blobid); //gibt als Rückgabewert die ID zurück die in die Datenbank geschrieben werden muss
SQLquery zum Einfügen:
$sqlquery = "INSERT INTO BLOB_TEST_TABLE (TESTID, BLOBID) VALUES (1,?)"
ibase_query($sqlquery,$blob) //Blob muss als optionaler Parameter übergeben werden

Auslesen:
$blobdata = ibase_blob_info($blob); //Größe ermitteln (leider gibts beim auslesen noch kein Autosize)
$blobid = ibase_blob_open($blob); //öffnen von Blob ($Bolb is das was man aus der Datenbankabfragey bekommt)
$string = ibase_blob_get($blobid,$blobdata[0]); //Auslesen der Daten ($blobdata[0] ist die ermittelte Größe; $blobdata[1] wäre der Datentyp ->Fürs Casten)
ibase_blob_close($blobid); //Wichtig Blob immer schließen!!!!!!

Löschen:
Einfach DELETE FROM ....
Löscht den Blob auch.

Achtung: Blobs sind nur in der aktuelle Transaktion gültig!!!!

Gruß
DMIII



bei Antwort benachrichtigen
xafford DeathMasterIII „Datenbank: Problem mit BLOB-Datentyp“
Optionen

wie hast du die tabelle in der datenbank angelegt? hast du der spalte BLOB irgendwelche weiteren attribute zugewisen, die sich eventuell nicht vertragen obwohl sie akzieptiert werden?
eigentlich halte ich nichts davon BLOB für text zu nehmen, da er eigentlich am besten für binaries geeignet ist (afaik). die indizierung über BLOBs geht glaub auch nicht.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Heinz_Malcher xafford „wie hast du die tabelle in der datenbank angelegt? hast du der spalte BLOB...“
Optionen

über blob geht eigentlich so gut wie nichts oder? zumindest kann ich damit nichts anfangen wenn der inhalt länger werden soll als es TEXT verkraftet nimmt man halt mediumtext oder maximumtext oder largetext oder wie das heisst

bei Antwort benachrichtigen