Algunas notas sobre el uso de BLOBs (columnas de tipo TEXT y BYTE):
BLOBs son normalmente manipulados por enteros, los cuales representan
identificadores de BLOB_
Las consultas de selección devuelven un "blob id" para columnas de tipo BYTE y TEXT_
Si eliges trabajar con los BLOBs en memoria (con: "ifx_blobinfile(0);") entonces
puedes obtener el contenido con "string_var = ifx_get_blob($blob_id);"_
Si prefieres manipularlos en ficheros usa "ifx_blobinfile(1);" y
"ifx_get_blob($blob_id);" devolverá el nombre del archivo_ En este caso, utiliza
las funciones habituales de entrada y salida de ficheros para obtener el
contenido de los blob_
Para consultas de inserción y actualización debes crear estos identificadores de blob
con "ifx_create_blob(__);"_ Entonces pondrás los identificadores de blob en un
array y sustituirás en la cadena de la consulta las columnas de tipo blob por
una interrogación (?)_
Para inserciones y actualizaciones eres responsable de definir el contenido
de los blob con ifx_update_blob(___)_
La conducta de columnas BLOB puede ser modificada mediante variables de
configuración, las cuales pueden ser definidas en tiempo de ejecución
mediante funciones_
variable de configuración: ifx_textasvarchar
variable de configuración: ifx_byteasvarchar
funciones en tiempo de ejecución:
ifx_textasvarchar(0): usa identificadores de blob para columnas de tipo TEXT
en las consultas de selección
ifx_byteasvarchar(0): usa identificadores de blob para columnas de tipo BYTE
en las consultas de selección
ifx_textasvarchar(1): devuelve columnas de tipo TEXT como si fueran de tipo
VARCHAR, sin tener que usar identificadores de blob en
las consultas de selección
ifx_byteasvarchar(1): devuelve columnas de tipo BYTE como si fueran de tipo
VARCHAR, sin tener que usar identificadores de blob en
las consultas de selección_
variable de configuración: ifx_blobinfile
función en tiempo de ejecución:
ifx_blobinfile_mode(0): devuelve columnas de tipo BYTE en memoria, el
identificador de blob te permite obtener el contenido_
ifx_blobinfile_mode(1): devuelve columnas de tipo BYTE en un fichero, el
identificador te permite saber el nombre de dicho archivo_
Si defines ifx_text/byteasvarchar a 1 entonces puedes usar columnas de tipo
TEXT y BYTE en las consultas de selección como campos de tipo VARCHAR, pero
teniendo en cuenta que tendrán un mayor tamaño que el habitual_
Ya que en PHP todas las cadenas son posibles, esto permite datos
binarios_ De esta forma, se pueden manejar correctamente_ La información devuelta
puede contener cualquier cosa, tú eres responsable del contenido_
Si defines ifx_blobinfile a 1, utiliza el nombre del archivo devuelto por
ifx_get_blob(__) para acceder a los contenidos del blobs_
En este caso, ERES REPONSABLE DE ELIMINAR EL ARCHIVO TEMPORAL GENERADO POR
INFORMIX cuando accedas a los registros_
Cada nueva fila obtenida creará un nuevo archivo temporal para cada columna
de tipo BYTE_
El directorio donde se guardan los archivos temporales puede ser definido por
la variable de entorno blobdir, por defecto es "_", es decir, el directorio actual_
Así, putenv(blobdir=tmpblob"); definirá un directorio donde se localizarán todos
los ficheros temporales y facilitará su borrado_ Todos los nombres de
los archivos comienzan por "blb"_