XLIII. Informix

Les pilotes d' accès à Informix pour Online (ODS ) 7.x , SE 7.x , Universal Server (IUS ) 9.x et IDS 2000 sont implémentés dans "functions / ifx.ec " et "functions / php3_ifx.h " . Le support ODS 7.x est plutôt complet , et accepte les colonnes de type BYTE et TEXT . Le support IUS 9.x est partiellement fini , de nouveaux types sont disponibles , mais SLOB et CLOB sont toujours en cours de développement .

Notes de configuration : Vous avez besoin d' une version de ESQL / C pour compiler le pilote PHP d 'Informix . Les versions ESQL / C 7.2x sont utilisables . ESQL / C fait partie du SDK Informix Client .

Avant que vous ne lanciez le script " configure" , assurez-vous que la variable d'environnement "INFORMIXDIR " a été correctement paramétrée , et que $INFORMIXDIR / bin est dans votre PATH .

Le script de configuration va détecter automatiquement les librairies disponibles , et inclure les dossiers si vous lancer le script avec l ' option --with-informix=yes . Vous pouvez ignorer cette détection en spécifiant " IFX_LIBDIR" , "IFX_LIBS " et "IFX_INCDIR " dans votre environnement . Le script de configuration va aussi essayer de détecter la version de votre serveur Informix . Il modifiera alors la condition de compilation " HAVE_IFX_IUS " si votre serveur Informix est d 'une version plus récente que 9.00 .

Notes d ' exécutions : Assurez-vous que les variables d ' environnement INFORMIXDIR et INFORMIXSERVER sont accessibles au pilote PHP , et que le dossier bin INFORMIX est aussi dans la variable PATH . Vous pouvez le voir en lançant un script qui contient un appel à phpinfo( ) avant que vous ne commenciez à tester . La fonction phpinfo( ) affiche une liste des variables d 'environnement . Cela fonctionne aussi bien en mode mod_php , qu ' en mode CGI . Il vous faudra fixer les valeurs dans le script de démarrage d ' Apache .

Les " Informix shared libraries " doivent aussi être accessibles au chargement (vérifiez LD_LINBRARY_PATH ou ld.so.conf / ldconfig ) .

Notes sur l' utilisation des BLOBs (TEXT et BYTE ) : Les objets de type BLOBs sont normalement gérés par des identifiants de BLOB . Les requêtes de sélection retournent un identifiant de BLOB pour chaque colonne de type BYTE et TEXT . Vous pouvez en lire le contenu , avec des commandes de types " string_var = ifx_get_blob($BLOB_id) ; " ; si vous souhaitez ramener le BLOB en mémoire (avec : "ifx_blobinfile_mode(0) ;" ) . Si vous préférez recevoir le contenu d' une colonne BLOB dans un fichier , utilisez ifx_blobinfile_mode( ) , et ifx_get_blob($BLOB_id ) vous retournera le nom du fichier . Utilisez les fonctions habituelles d ' accès aux fichiers pour lire son contenu .

Pour les requêtes INSERT / UPDATE , vous devez créer les identifiants de BLOB par vous même , avec la fonction ifx_create_blob( ) . Puis , vous placez l' identifiant de BLOB dans un tableau , et remplacez la colonne par un point d 'interrogation . Pour les UPDATE / INSERT , vous êtes responsable du contenu du BLOB , avec la fonction ifx_update_blob( ) .

Le comportement par défaut des colonnes de type BLOB peut être modifié en affectant de nouvelles valeurs aux variables de configuration ( même à la volée ) :

Variable de configuration : ifx.textasvarchar

Variable de configuration : ifx.byteasvarchar

Fonctions à utiliser lors de l ' exécution :

ifx_textasvarchar( 0 ) : Utilise l ' identifiant de BLOB avec des colonnes de type TEXT , dans les requêtes SELECT

ifx_byteasvarchar( 0 ) : Utilise l ' identifiant de BLOB avec des colonnes de type BYTE , dans les requêtes SELECT

ifx_textasvarchar( 1 ) : Retourne les colonnes de type TEXT sous la forme de VARCHAR , sans utiliser les identifiants de BLOB dans les requêtes SELECT .

ifx_byteasvarchar( 1 ) : Retourne les colonnes de type BYTE sous la forme de VARCHAR , sans utiliser les identifiants de BLOB dans les requêtes SELECT .

Variable de configuration : ifx.BLOBinfile

Fonctions à utiliser lors de l ' exécution :

ifx_blobinfile_mode( 0 ) : Retourne les colonnes de type BYTE en mémoire , l ' identifiant de BLOB vous donnera accès au contenu .

ifx_blobinfile_mode( 1 ) : Retourne les colonnes de type BYTE dans un fichier , l ' identifiant de BLOB vous donnera accès au nom de ce fichier .

En affectant la valeur de 1 à ifx_text / byteasvarchar , vous pouvez utiliser les colonnes de type TEXT et BYTE dans les requêtes SELECT comme des champs VARCHAR ( mais plus long ) . Etant donné la gestion des chaînes par PHP , cette technique conserve les données binaires . Les données retournées peuvent contenir n ' importe quoi , et vous êtes responsable de la bonne manipulation de ces valeurs .

En affectant la valeur de 1 à ifx_blobinfile_mode( ) , utilisez le nom de fichier retourné par ifx_get_blob( ) pour accéder au contenu du BLOB . Notez bien que vous êtes tenu responsable de l ' effacement des fichiers temporaires , créés par Informix . Chaque nouvelle ligne lue sur le serveur va créer un nouveau fichier temporaire , pour chaque colonne de type BYTE .

L' emplacement des fichiers temporaire peut être modifié , grâce à la variable "blobdir" , (par défaut , " ." , c'est-à-dire , le dossier courant ) . Une valeur telle que BLOBdir=" tmpBLOB " simplifiera le nettoyage des fichiers temporaires , accidentellement oubliés (les noms commencent tous par "blb" ) .

Suppression automatique des espaces ( SQLCHAR et SQLNCHAR ) : Elle peut être mise en place avec la variable de configuration .

ifx.charasvarchar : avec la valeur 1 , les espaces de fin de champs seront automatiquement supprimés .

Lorsque la variable de configuration ifx.nullformat ( ou que la fonction ifx_nullformat( ) ) est à un , les colonnes contenant la valeur NULL retourneront la chaîne "NULL " , et sinon , retourneront une chaîne vide . Cela vous permet de faire la différence entre les colonnes vides et celles qui contiennent la valeur NULL .

Table des matières
ifx_affected_rows -- Retourne le nombre de lignes affectées par une requête.
ifx_blobinfile_mode -- Choisit le mode par défaut des objets BLOB pour toutes les requêtes SELECT.
ifx_byteasvarchar -- Choisit le mode par défaut des objets BYTE.
ifx_close -- Ferme une connexion à un serveur Informix.
ifx_connect -- Ouvre une connexion à un serveur Informix.
ifx_copy_blob -- Duplique un objet BLOB.
ifx_create_blob -- Crée un objet BLOB.
ifx_create_char -- Crée un objet char.
ifx_do -- Exécute une requête SQL déjà préparée.
ifx_error -- Retourne le code d'erreur de la dernière requête Informix.
ifx_errormsg -- Retourne le message d'erreur de la dernière requête Informix.
ifx_fetch_row -- Retourne une ligne sous la forme d'un tableau énuméré.
ifx_fieldproperties -- Liste les propriétés des champs SQL.
ifx_fieldtypes -- Liste les champs Informix SQL.
ifx_free_blob -- Supprime un objet BLOB.
ifx_free_char -- Supprime un objet char.
ifx_free_result -- Libère les ressources prises par un résultat.
ifx_get_blob -- Retourne le contenu d'un objet BLOB.
ifx_get_char -- Retourne le contenu d'un objet char.
ifx_getsqlca -- Retourne le contenu de la variable sqlca.sqlerrd[0..5] après une requête.
ifx_htmltbl_result -- Lit toutes les lignes d'un tableau, et la met sous la forme d'un tableau HTML.
ifx_nullformat -- Modifie le mode par défaut de lecture des valeurs.
ifx_num_fields -- Retourne le nombre de colonnes dans une requête.
ifx_num_rows -- Compte le nombre de ligne déjà lues dans un résultat.
ifx_pconnect -- Ouvre une connexion persistante à un serveur Informix.
ifx_prepare -- Prépare une requête SQL pour l'exécution.
ifx_query -- Envoie une requête Informix.
ifx_textasvarchar -- Choisit le mode par défaut des objets text.
ifx_update_blob -- Modifie le contenu d'un objet BLOB.
ifx_update_char -- Modifie le contenu d'un objet char.
ifxus_close_slob -- Ferme un objet SLOB.
ifxus_create_slob -- Crée un objet SLOB et l'ouvre.
ifx_free_slob -- Supprime un objet SLOB.
ifxus_open_slob -- Ouvre un objet SLOB.
ifxus_read_slob -- Lit n bytes d'un objet SLOB.
ifxus_seek_slob -- Fixe le fichier courant, ou la position courante.
ifxus_tell_slob -- Retourne le fichier courant, ou la position courante.
ifxus_write_slob -- Ecrit une chaîne dans un objet SLOB.