ifx_query

ifx_query -- Envoie une requête Informix.

Description

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

ifx_query( ) retourne un identifiant positif de résultat Informix en cas de succès , et FALSE en cas d 'erreur .

L' entier de type "identifiant de résultat " est utilisé par4 d 'autres fonctions pour lire les résultats . Pour un exemple , reportez-vous à ifx_affected_rows( ) pour connaître le nombre de lignes affectées .

ifx_query( ) envoie une requête au serveur actif courant , associé à l 'identifiant de connexion link_identifier . Si link_identifier n ' est pas fourni , la dernière connexion ouverte sera utilisée . Si aucune connexion n' a été ouverte , ifx_query( ) va essayer d'en créer une , en appelant ifx_connect( ) .

Exécute la requête query sur la connexion conn_id . Pour les requêtes de type SELECT , un pointeur est déclaré , et ouvert . L' option cursor_type permet de choisir le type de pointeur , "scroll " et / ou "hold " . cursor_type accepte les deux valeurs séparées , et leur combinaison . Les requêtes d ' autre type sont à exécution immédiate .

Le nombre de lignes affectées ( estimé ou exact ) est enregistré pour être lu avec ifx_affected_rows( ) .

Si vous avez une colonne de type BLOB ( BYTE ou TEXT ) dans une requête de modification , vous pouvez passer un paramètre BLOBidarray qui contiendra les identifiants des BLOB à modifier , et vous devrez remplacer cette colonne par un point d'interrogation ( ? ) dans la requête .

Si le contenu d' une colonne de type TEXT (ou BYTE ) vous pouvez aussi utiliser les fonctions ifx_textasvarchar( ) et ifx_byteasvarchar( ) . Cela vous permettra d' utiliser les colonnes TEXT ( ou BYTE ) comme des colonnes de type VARCHAR (mais plus long , tout de même) , et vous n'aurez pas besoin de l 'identifiant de BLOB .

Avec les fonctions ifx_textasvarchar( ) et ifx_byteasvarchar( ) (valeurs par défaut ) , les requêtes SELECT retourneront des identifiants de BLOB . Cet identifiant peut être une chaîne ou un fichier , suivant la configuration ( voir plus loin ) .

Voir aussi ifx_connect( ) .

Exemple 1 . Afficher toutes les lignes de la table " ordres " sous la forme html

 
ifx_textasvarchar(

 
1)

 
;

 
/

 
/

 
Utilisation

 
du

 
mode

 
"text

 
mode

 
"

 
pour

 
les

 
BLOBs

 
$res_id

 
=

 
ifx_query("select

 
*

 
from

 
orders"

 
,

 
$conn_id)

 
;

 
if

 
(

 
!

 
$res_id

 
)

 
{

 
printf("Impossible

 
de

 
sélectionner

 
des

 
lignes

 
dans

 
:

 
%s\n

 
br

 
%s

 
br

 
\n"

 
,

 
ifx_error())

 
;

 
ifx_errormsg()

 
;

 
die

 
;

 
}

 
ifx_htmltbl_result($res_id

 
,

 
"border=\"1\"")

 
;

 
ifx_free_result($res_id)

 
;



Exemple 2 . Insertion de valeurs dans la table " catalogue "

 
?php

 
/

 
/

 
créer

 
un

 
identifiant

 
de

 
BLOB

 
pour

 
une

 
colonne

 
de

 
type

 
BYTE

 
et

 
une

 
de

 
type

 
TEXT

 
$textid

 
=

 
ifx_create_blob(

 
0

 
,

 
0

 
,

 
"Colonne

 
Text

 
en

 
mémoire")

 
;

 
$byteid

 
=

 
ifx_create_blob(1

 
,

 
0

 
,

 
"Colonne

 
Byte

 
en

 
mémoire")

 
;

 
/

 
/

 
Stocke

 
l'identifiant

 
du

 
BLOB

 
dans

 
le

 
tableau

 
BLOBid

 
$BLOBidarray[

 
]

 
=

 
$textid

 
;

 
$BLOBidarray[

 
]

 
=

 
$byteid

 
;

 
/

 
/

 
éxécute

 
la

 
requête

 
$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

 
)

 
{

 
/

 
/

 
..

 
.

 
erreur

 
..

 
.

 
}

 
/

 
/

 
libération

 
du

 
résultat

 
ifx_free_result($res_id)

 
;

 
?