Funciones
de Informix
El
controlador de Informix para Informix
(IDS) 7.x, SE 7.x, Universal Server (IUS) 9.x y IDS 2000 es implementado en
"ifx.ec" y "php3_ifx.h"
en el directorio de la extensión informix. El soporte
para IDS 7.x es razonablemente completo, con soporte para columnas BYTE y TEXT.
El soporte para IUS 9.x se encuentra parcialmente terminado: los nuevos tipos
de datos se encuentran allí, pero el soporte para SLOB y CLOB aun está en
construcción
Notas de
configuración: Necesita alguna versión de ESQL/C para compilar el controlador
para Informix de PHP. Las versiones de ESQL/C a
partir de 7.2x deben trabajar bien. ESQL/C es ahora parte del SDK de Cliente de
Informix.
Asegúrese de
que la variable "INFORMIXDIR" haya sido definida, y de que
$INFORMIXDIR/bin se encuentre en su PATH antes de
ejecutar el script "configure".
Para poder
utilizar estas funciones, se debe compilar PHP con la opción de compilación --with-informix[=DIR],
donde DIR es el directorio base de la instalación de Informix,
y cuyo valor no se establece por defecto.
Configuración en tiempo de ejecución
El
comportamiento de estas funciones está afectado por los valores definidos en php.ini.
Nota: Make sure that the
Informix environment variables INFORMIXDIR and INFORMIXSERVER are available to
the PHP ifx driver, and that the INFORMIX bin directory is in the PATH. Check
this by running a script that contains a call to phpinfo()
before you start testing. The phpinfo()
output should list these environment variables. This is true for both CGI php
and Apache mod_php. You may have to set these environment variables in your Apache
startup script.
The Informix shared libraries should also be available to
the loader (check LD_LIBRARY_PATH or ld.so.conf/ldconfig).
Some notes on the use of BLOBs (TEXT and BYTE columns): BLOBs are normally addressed by BLOB identifiers. Select queries return a
"blob id" for every BYTE and TEXT column. You can get at the contents
with "string_var = ifx_get_blob($blob_id);" if you choose to get the
BLOBs in memory (with: "ifx_blobinfile(0);"). If you prefer to
receive the content of BLOB columns in a file, use
"ifx_blobinfile(1);", and "ifx_get_blob($blob_id);" will
get you the filename. Use normal file I/O to get at the blob contents.
For insert/update queries you must create these
"blob id's" yourself with "ifx_create_blob();".
You then plug the blob id's into an array, and replace the blob columns with a
question mark (?) in the query string. For updates/inserts, you are responsible
for setting the blob contents with ifx_update_blob().
The behaviour of BLOB columns can be altered by
configuration variables that also can be set at runtime:
configuration variable: ifx.textasvarchar
configuration variable: ifx.byteasvarchar
runtime functions:
ifx_textasvarchar(0): use blob id's for select queries
with TEXT columns
ifx_byteasvarchar(0): use blob id's for select queries
with BYTE columns
ifx_textasvarchar(1): return TEXT columns as if they were
VARCHAR columns, so that you don't need to use blob id's for select queries.
ifx_byteasvarchar(1): return BYTE columns as if they were
VARCHAR columns, so that you don't need to use blob id's for select queries.
configuration variable: ifx.blobinfile
runtime function:
ifx_blobinfile_mode(0): return BYTE columns in memory,
the blob id lets you get at the contents.
ifx_blobinfile_mode(1): return BYTE columns in a file,
the blob id lets you get at the file name.
If you set ifx_text/byteasvarchar to 1, you can use TEXT
and BYTE columns in select queries just like normal (but rather long) VARCHAR
fields. Since all strings are "counted" in PHP, this remains
"binary safe". It is up to you to handle this correctly. The returned
data can contain anything, you are responsible for the contents.
If you set ifx_blobinfile to 1, use the file name
returned by ifx_get_blob(..) to get at the blob contents. Note that in this
case YOU ARE RESPONSIBLE FOR DELETING THE TEMPORARY FILES CREATED BY INFORMIX
when fetching the row. Every new row fetched will create new temporary files
for every BYTE column.
The location of the temporary files can be influenced by
the environment variable "blobdir", default is "." (the
current directory). Something like: putenv(blobdir=tmpblob"); will ease
the cleaning up of temp files accidentally left behind (their names all start
with "blb").
Automatically trimming "char" (SQLCHAR and
SQLNCHAR) data: This can be set with the
configuration variable
ifx.charasvarchar: if set to 1 trailing spaces will be
automatically trimmed, to save you some "chopping".
NULL values: The configuration variable ifx.nullformat
(and the runtime function ifx_nullformat())
when set to TRUE will return NULL columns as the string "NULL",
when set to FALSE they return the empty string. This
allows you to discriminate between NULL columns and empty columns.
Tabla 1. Informix configuration
options
Name |
Default |
Changeable |
Changelog |
ifx.allow_persistent |
"1" |
PHP_INI_SYSTEM |
|
ifx.max_persistent |
"-1" |
PHP_INI_SYSTEM |
|
ifx.max_links |
"-1" |
PHP_INI_SYSTEM |
|
ifx.default_host |
NULL |
PHP_INI_SYSTEM |
|
ifx.default_user |
NULL |
PHP_INI_SYSTEM |
|
ifx.default_password |
NULL |
PHP_INI_SYSTEM |
|
ifx.blobinfile |
"1" |
PHP_INI_ALL |
|
ifx.textasvarchar |
"0" |
PHP_INI_ALL |
|
ifx.byteasvarchar |
"0" |
PHP_INI_ALL |
|
ifx.charasvarchar |
"0" |
PHP_INI_ALL |
|
ifx.nullformat |
"0" |
PHP_INI_ALL |
|
For further details and definitions of the
PHP_INI_* constants, see the Apéndice
G.
A
continuación se presenta una corta explicación de las directivas de
configuración.
ifx.allow_persistent boolean
Whether to allow persistent Informix
connections.
ifx.max_persistent integer
The maximum number of persistent
Informix connections per process.
ifx.max_links integer
The maximum number of Informix
connections per process, including persistent connections.
ifx.default_host string
The default host to connect to when
no host is specified in ifx_connect()
or ifx_pconnect().
Doesn't apply in safe mode.
ifx.default_user string
The default user id to use when none
is specified in ifx_connect()
or ifx_pconnect().
Doesn't apply in safe mode.
ifx.default_password string
The default password to use when none
is specified in ifx_connect()
or ifx_pconnect().
Doesn't apply in safe mode.
ifx.blobinfile boolean
Set to TRUE if you want to return blob columns in a file, FALSE if you want them in memory. You can override the setting at runtime with ifx_blobinfile_mode().
ifx.textasvarchar boolean
Set to TRUE if you want to return TEXT columns as normal strings in select statements,
FALSE if you want to use blob id parameters. You can override the setting at
runtime with ifx_textasvarchar().
ifx.byteasvarchar boolean
Set to TRUE if you want to return BYTE columns as normal strings in select queries, FALSE if you want to use blob id parameters. You can override the setting at
runtime with ifx_textasvarchar().
ifx.charasvarchar boolean
Set to TRUE if you want to trim trailing spaces from CHAR columns when fetching them.
ifx.nullformat boolean
Set to TRUE if you want to return NULL columns as the literal
string "NULL", FALSE if you want them returned as the empty string "". You can
override this setting at runtime with ifx_nullformat().
Esta extensión no tiene ninguna constante definida.
Tabla de contenidos
ifx_affected_rows -- Obtiene el número de
registros procesados por una consulta
ifx_blobinfile_mode -- Define el modo por
defecto para los blob en todas las consultas de
selección
ifx_byteasvarchar -- Define el modo por
defecto para los campos de tipo byte
ifx_close -- Cierra una conexión con Informix
ifx_connect -- Abrir una conexión con un
servidor Informix
ifx_copy_blob -- Duplica el objeto blob dado
ifx_create_blob -- Crea un objeto blob
ifx_create_char -- Crea un objeto char
ifx_do -- Ejecuta una sentencia SQL preparada
previamente
ifx_error -- Devuelve el código de error de
la última llamada a Informix
ifx_errormsg -- Devuelve el mensaje de error
de la última llamada a Informix
ifx_fetch_row -- Obtiene registros como un array (vector) enumerado
ifx_fieldproperties -- Indica las propiedades
de los campos de una consulta SQL
ifx_fieldtypes -- Obtiene los campos de una
consulta SQL
ifx_free_blob -- Borra el objeto blob
ifx_free_char -- Elimina un objeto char
ifx_free_result -- Libera los recursos de una
consulta
ifx_get_blob -- Obtiene el contenido de un
objeto blob
ifx_get_char -- Obtiene el contenido de un
objeto char
ifx_getsqlca -- Después de una consulta,
obtiene el contenido de sqlca.sqlerrd[0..5]
ifx_htmltbl_result -- Muestra todos los
registros de una consulta en una tabla HTML
ifx_nullformat -- Define el valor por defecto
cuando se leen valores nulos
ifx_num_fields -- Devuelve el número de
columnas en una consulta
ifx_num_rows -- Cuenta los registros ya
leídos de una consulta
ifx_pconnect -- Abre una conexión permanente
con Informix
ifx_prepare -- Preparar una sentencia-SQL
para su ejecución
ifx_query -- Enviar una consulta Informix
ifx_textasvarchar -- Define el modo por
defecto para los campos de tipo text
ifx_update_blob -- Actualiza el contenido de
un objeto blob
ifx_update_char -- Actualiza el contenido de
un objeto char
ifxus_close_slob -- Cierra un objeto slob
ifxus_create_slob -- Crea un objeto slob y lo abre
ifxus_free_slob -- Elimina un objeto slob
ifxus_open_slob -- Abre un objeto slob
ifxus_read_slob -- Lee un número de bytes (nbytes) de un objeto slob
ifxus_seek_slob -- Establece la posición de
archivo o búsqueda actual
ifxus_tell_slob -- Devuelve la posición de
archivo o búsqueda actual
ifxus_write_slob -- Escribe una cadena en un
objeto slob