Manuel PHP
Précédent |  | Suivant

# ifx_query

(PHP 3>= 3.0.3, PHP 4 )

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

Précédent | Sommaire | Suivant
ifx_prepare | Niveau supérieur | ifx_textasvarchar