Notes sur l'utilisation des BLOBs (TEXT et BYTE) :
Les objets de type BLOBs sont normalement gérés par des
identifiants de BLOB. Les requêtes de sélection retournent
un identifiant de BLOB pour chaque colonne de type BYTE et TEXT. Vous
pouvez en lire le contenu, avec des commandes de types
"string_var = ifx_get_blob($BLOB_id);" ; si vous souhaitez ramener le BLOB en
mémoire (avec: "ifx_blobinfile_mode(0);"). Si vous préférez
recevoir le contenu d'une colonne BLOB dans un fichier, utilisez
ifx_blobinfile_mode(), et ifx_get_blob($BLOB_id)
vous retournera le nom du fichier. Utilisez les fonctions habituelles
d'accès aux fichiers pour lire son contenu.
Pour les requêtes INSERT/UPDATE, vous devez créer les identifiants
de BLOB par vous même, avec la fonction ifx_create_blob().
Puis, vous placez l'identifiant de BLOB dans un tableau, et remplacez
la colonne par un point d'interrogation. Pour les UPDATE/INSERT, vous
êtes responsable du contenu du BLOB, avec la fonction
ifx_update_blob().
Le comportement par défaut des colonnes de type BLOB peut être
modifié en affectant de nouvelles valeurs aux variables de configuration
(même à la volée) :
Variable de configuration : ifx.textasvarchar
Variable de configuration : ifx.byteasvarchar
Fonctions à utiliser lors de l'exécution :
ifx_textasvarchar(0) : Utilise l'identifiant de BLOB avec des colonnes de type
TEXT, dans les requêtes SELECT
ifx_byteasvarchar(0) : Utilise l'identifiant de BLOB avec des colonnes de type
BYTE, dans les requêtes SELECT
ifx_textasvarchar(1) : Retourne les colonnes de type TEXT sous la forme de
VARCHAR, sans utiliser les identifiants de BLOB dans les requêtes SELECT.
ifx_byteasvarchar(1) : Retourne les colonnes de type BYTE sous la forme de
VARCHAR, sans utiliser les identifiants de BLOB dans les requêtes SELECT.
Variable de configuration : ifx.BLOBinfile
Fonctions à utiliser lors de l'exécution :
ifx_blobinfile_mode(0) : Retourne les colonnes de type BYTE en mémoire,
l'identifiant de BLOB vous donnera accès au contenu.
ifx_blobinfile_mode(1) : Retourne les colonnes de type BYTE dans un fichier,
l'identifiant de BLOB vous donnera accès au nom de ce fichier.
En affectant la valeur de 1 à ifx_text/byteasvarchar, vous pouvez
utiliser les colonnes de type TEXT et BYTE dans les requêtes SELECT
comme des champs VARCHAR (mais plus long). Etant donné la gestion
des chaînes par PHP, cette technique conserve les données
binaires. Les données retournées peuvent contenir n'importe
quoi, et vous êtes responsable de la bonne manipulation de ces valeurs.
En affectant la valeur de 1 à ifx_blobinfile_mode(),
utilisez le nom de fichier retourné par ifx_get_blob()
pour accéder au contenu du BLOB. Notez bien que vous êtes tenu
responsable de l'effacement des fichiers temporaires, créés par
Informix. Chaque nouvelle ligne lue sur le serveur va créer un nouveau
fichier temporaire, pour chaque colonne de type BYTE.
L'emplacement des fichiers temporaire peut être modifié, grâce
à la variable "blobdir", (par défaut, ".", c'est-à-dire,
le dossier courant). Une valeur telle que BLOBdir="tmpBLOB" simplifiera le
nettoyage des fichiers temporaires, accidentellement oubliés (les noms
commencent tous par "blb").