Einige Anmerkungen zum Gebrauch von BLOBs (TEXT- und BYTE Felder):
BLOBs werden normalerweise durch BLOB-Identifikatoren adressiert.
Select Abfragen geben eine "blob id" f�r alle TEXT- und BYTE-Felder
zur�ck. Sie k�nnen die Inhalte mit "string_var =
ifx_get_blob($blob_id);" auslesen, falls Sie angeben, dass Sie die
BLOBS in den Speicher schreiben m�chten (mit "ifx_blobinfile(0);").
Wenn Sie die Inhalte von BLOB-Felder lieber in eine Datei ausgeben
m�chten, benutzen Sie "ifx_blobinfile(1);" und mit
"ifx_get_blob($blob_id);" ermitteln Sie den Dateinamen. Benutzen Sie
normale Datei I/O-Routinen, um die Inhalte von BLOBs zu erhalten.
Bei insert/update Abfragen m�ssen Sie diese "blob id's" mit der
Funktion "ifx_create_blob();" selber erzeugen.
Danach schreiben Sie die blob id's in ein Array und ersetzen die
BLOB-Felder durch ein Fragezeichen (?) im Abfragestring. F�r die
Inhalte der BLOBs, die mit der Funktion
ifx_update_blob() gesetzt werden, sind Sie bei
updates/inserts selber verantwortlich.
Das Verhalten einer BLOB-Spalte kann auch zur Laufzeit durch
Konfigurationsvariablen ver�ndert werden.
Konfigurationsvariable : ifx.textasvarchar
Konfigurationsvariable : ifx.byteasvarchar
Laufzeitfunktionen :
ifx_textasvarchar(0) : benutzt bei SELECT Abfragen von TEXT-Felder die blob-id
ifx_byteasvarchar(0) : benutzt bei SELECT Abfragen von BYTE-Felder die blob-id
ifx_textasvarchar(1) : gibt TEXT-Felder so zur�ck, als w�ren es VARCHAR Felder, so dass Sie keine blob-id f�r select Abfragen brauchen.
ifx_byteasvarchar(1) : gibt BYTE-Felder so zur�ck, als w�ren es VARCHAR Felder, so dass Sie keine blob-id f�r select Abfragen brauchen.
Konfigurationsvariable : ifx.blobinfile
Laufzeitfunktionen :
ifx_blobinfile_mode(0) : gibt BYTE-Felder in den Speicher zur�ck, mit
der blob-id k�nnen Sie auf den Inhalt zugreifen.
ifx_blobinfile_mode(1) : gibt BYTE-Felder in einer Datei zur�ck, mit
der blob-id k�nnen Sie den Dateinamen ermitteln.
Wenn Sie ifx_text/byteasvarchar auf 1 setzen, k�nnen Sie TEXT- und
BYTE-Felder in select Abfragen genauso benutzen, wie normale
(allerdings sehr lange) VARCHAR-Felder. Da alle Zeichenketten in PHP
"gez�hlt" werden, bleibt dies "binary safe". Es bleibt Ihnen
�berlassen, korrekt damit umzugehen. Die zur�ckgegebenen Daten k�nnen
alles m�gliche enthalten, so dass Sie f�r die Inhalte verantwortlich
sind.
Wenn Sie ifx_blobinfile auf 1 setzen, benutzen Sie den Dateinamen, der
von ifx_get_blob(..) zur�ckgegeben wird, um auf den Inhalt des BLOB
zuzugreifen. Beachten Sie, dass Sie in diesem Fall F�R DAS L�SCHEN DER
TEMPOR�REN DATEIEN, DIE VON INFORMIX ERSTELLT WERDEN VERANTWORTLLICH
SIND, wenn sie ein Tupel auslesen. Jedes neue Tupel, das gelesen wird,
erzeugt f�r jedes BYTE-Feld eine neue tempor�re Datei.
Der Speicherort f�r die tempor�ren Dateien kann mit der
Umgebungsvariablen "blobdir" beeinflusst werden, die
Standardeinstellung ist "." (das aktuelle Verzeichnis). Etwas �hnliches
wie : putenv(blobdir=tmpblob"); erleichtert das Bereinigen der
tempor�ren Dateien, die versehentlich stehen geblieben sind (ihre Namen
beginnen alle mit "blb").