ifx_query

(PHP 3>= 3.0.3, PHP 4 )

ifx_query -- Envía una consulta a Informix

Descripción

int ifx_query ( string query [, int link_identifier [, int cursor_type [, mixed blobidarray]]])

Devuelve un identificador positivo de resultado si tuvo éxito, FALSE en otro caso.

Un entero (integer) "result_id" usado por otras funciones para obtener el resultado de la consulta. Es definido "affected_rows" (registros procesados) y se puede obtener mediante la función ifx_affected_rows().

ifx_query() envía una consulta a la base de datos activa actualmente en el servidor, la cual está representada por el identificador de enlace especificado (link_identifier). Si el identificador no es definido, el último enlace abierto es asumido. Si el enlace no se encuentra abierto, ifx_connect() es llamado y utilizado.

Ejecuta una consulta (query) sobre una conexión (link_identifier). Un cursor es definido y abierto para las consultas de selección. El parámetro opcional tipo de cursor (cursor_type) te permite que sea un cursor de tipo "scroll" y/o "hold". Es una máscara y puede ser IFX_SCROLL, IFX_HOLD o ambos. Las consultas que no son de selección son ejecutadas inmediatamente.

Para cualquier tipo de consulta el número (estimado o real) de registros procesados es guardo y se puede obtener mediante ifx_affected_rows().

Si tienes columnas BLOB (BYTE o TEXT) en una consulta de actualización, puedes añadir un parámetro blobidarray conteniendo los identificadores de blob y sustituir los valores de esas columnas por una "?" en el texto de la consulta.

Si el contenido de la columna de tipo TEXT (o BYTE) lo permite, también puedes usar "ifx_textasvarchar(1)" y "ifx_byteasvarchar(1)". Esto supone manejar columnas de tipo TEXT (o BYTE) como si fueran columnas normales de tipo VARCHAR (pero teniendo en cuenta que tendrán un mayor tamaño que el habitual), para consultas de selección y no necesitas preocuparte por los identificadores de blob.

La opción por defecto ifx_textasvarchar(0) o ifx_byteasvarchar(0) devuelve identificadores de blob (valores enteros) para las consultas de selección. Puedes obtener el contenido del blob como una cadena o un fichero con las funciones para blob (ver más adelante).

Examina también: ifx_connect().

Ejemplo 1. Mostrar todos los registros de la tabla "orders" como una tabla html

ifx_textasvarchar(1);      // usa "modo texto" para blobs
$res_id = ifx_query("select * from orders", $conn_id);
if (! $res_id) {
    printf("Can't select orders : %s\n<br>%s<br>\n", ifx_error());
    ifx_errormsg();
    die;
}
ifx_htmltbl_result($res_id, "border=\"1\"");
ifx_free_result($res_id);

Ejemplo 2. Inserta valores en la tabla "catalog"

// crea identificadores de blob para una columna de tipo byte y otra text
$textid = ifx_create_blob(0, 0, "Text column in memory");
$byteid = ifx_create_blob(1, 0, "Byte column in memory");
                      // almacena los identificadores de blob en un array llamado blobid
$blobidarray[] = $textid;
$blobidarray[] = $byteid;
                      // lanza la consulta
$query = "insert into catalog (stock_num, manu_code, " .
         "cat_descr,cat_picture) values(1,'HRO',?,?)";
$res_id = ifx_query($query, $conn_id, $blobidarray);
if (! $res_id) {
  ... error ...
}
                     // libera el resultado
ifx_free_result($res_id);