ifx_query

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)

 
;