Homepage selbermachen 7.846 Themen, 35.563 Beiträge

Datenbank: Problem mit BLOB-Datentyp

DeathMasterIII / 4 Antworten / Flachansicht 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
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