ifx_query

(PHP 3>= 3.0.3, PHP 4 , PHP 5)

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é par d'autres fonctions pour lire les résultats. Pour un exemple, reportez-vous à ifx_affected_rows() afin de 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.

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 est 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. Ces identifiants peuvent être une chaîne ou un fichier, suivant la configuration (voir plus loin).

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

<?php
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" IFX

<?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;

// exé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);
?>

Voir aussi ifx_connect().