(PECL ibm_db2 >= 1.0.0)
db2_connect — Retourne une connexion à une base de données
$database,$username,$password,$options = []Crée une nouvelle connexion à une base de données IBM DB2 Universal Database, IBM Cloudscape ou Apache Derby.
database
       Pour une connexion cataloguée de la base de données, database
       représente l'alias de la base de données dans le catalogue client DB2
      
       Pour une connexion non cataloguée de la base de données, database
       représente une chaîne complète de connexion qui est dans le format
       suivant :
       
DATABASE=où les paramètres représentent les valeurs suivantes :database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password;
databaseLe nom de la base de données.
hostnameL'adresse Internet ou IP du serveur de base de données.
portLe port TCP/IP sur lequel la base de données écoute les connexions.
usernameLe nom d'utilisateur avec lequel vous vous connectez à la base de données.
passwordLe mot de passe avec lequel vous vous connectez à la base de données.
usernameLe nom d'utilisateur avec lequel vous vous connectez à la base de données.
       Pour les connexions non cataloguées, vous devez passer une valeur
       null ou une chaîne vide.
      
passwordLe mot de passe avec lequel vous vous connectez à la base de données.
       Pour les connexions non cataloguées, vous devez passer une valeur
       null ou une chaîne vide.
      
optionsUn tableau associatif des options de connexion qui affecteront le comportement de la connexion, où les valeurs des clés incluent :
autocommit
           La valeur DB2_AUTOCOMMIT_ON active l'autocommit
           sur cette connexion.
          
           La valeur DB2_AUTOCOMMIT_OFF désactive le
           autocommit pour cette connexion.
          
DB2_ATTR_CASE
           Passer la valeur DB2_CASE_NATURAL spécifie que les
           noms de colonnes seront retournés dans leurs casses naturelles.
          
           Passer la valeur DB2_CASE_LOWER spécifie que les
           noms de colonnes seront retournés en minuscule.
          
           Passer la valeur DB2_CASE_UPPER spécifie que les
           noms de colonnes seront retournés en majuscule.
          
CURSOR
           Passer la valeur DB2_FORWARD_ONLY spécifie un curseur
           uniquement suivant pour une ressource de requête. C'est le type de curseur
           par défaut et est supporté sur tous les serveurs de base de données.
          
           Passer la valeur DB2_SCROLLABLE spécifie un
           curseur scrollable pour une ressource de requête. Ce mode permet
           un accès aléatoire aux lignes dans un jeu de résultats, mais actuellement,
           n'est supporté que par la base de données IBM DB2 Universal.
          
La nouvelle option suivante est disponible pour les versions ibm_db2 1.7.0 et suivantes.
trustedcontextLe fait de passer la valeur DB2_TRUSTED_CONTEXT_ENABLE active le contexte pour ce gestionnaire de connexion. Ce paramètre ne peut être défini avec la fonction db2_set_option().
Cette clé fonctionne uniquement si la base de données est cataloguée (même si la base de données est locale), ou si vous spécifiez le DSN complet lors de la création de la connexion.
Pour catalogue la base de données, utilisez les commandes suivantes :
db2 catalog tcpip node loopback remote <SERVERNAME> server <SERVICENAME> db2 catalog database <LOCALDBNAME> as <REMOTEDBNAME> at node loopback db2 "update dbm cfg using svcename <SERVICENAME>" db2set DB2COMM=TCPIP
Les nouvelles options i5/OS suivantes sont disponibles dans les versions ibm_db2 1.5.1 et suivantes.
i5_libUn caractère qui indique la bibliothèque par défaut qui sera utilisée pour résoudre les références aux fichiers non qualifiées. Ceci n'est pas valide si la connexion utilise un mode de système de nom.
i5_naming
           La valeur DB2_I5_NAMING_ON active DB2 UDB Cli
           iSeries mode système de nom. Les fichiers sont qualifiés en
           utilisant le délimiteur slash (/). Les fichiers non qualifiés sont
           résolus en utilisant la liste de bibliothèque pour le travail.
          
           La valeur DB2_I5_NAMING_OFF désactive DB2 UDB
           CLI mode de nom par défaut, qui est l'écriture SQL. Les fichiers
           sont qualifiés en utilisant le délimiteur point (.). Les fichiers
           non qualifiés sont résolus en utilisant soit la bibliothèque par
           défaut ou l'ID de l'usager courant.
          
i5_commit
           L'attribut i5_commit devrait être fixé avant
           l'appel à db2_connect(). Si la valeur est
           changée après que la connexion ait été établie et que la connexion
           est à une source de données distance, le changement ne prendra
           effet qu'au prochain appel de db2_connect().
          
Note:
La configuration php.ini
ibm_db2.i5_allow_commit==0 ouDB2_I5_TXN_NO_COMMITest par défaut, mais peut être dérivée avec l'optioni5_commit.
           DB2_I5_TXN_NO_COMMIT : contrôle d'envoi n'est pas utilisé.
          
           DB2_I5_TXN_READ_UNCOMMITTED : lecture ancienne,
           lecture non répétitive et fictive est possible.
          
           DB2_I5_TXN_READ_COMMITTED : lecture ancienne non
           possible. La lecture répétitive et fictive est possible.
          
           DB2_I5_TXN_REPEATABLE_READ : lecture ancienne et
           non répétitive n'est pas possible. Lecture fictive est possible.
          
           DB2_I5_TXN_SERIALIZABLE : les transactions sont
           linéarisées. Lecture ancienne, non répétitive et fictive n'est
           pas possible.
          
i5_query_optimize
            DB2_FIRST_IO Toutes les requêtes sont
            optimisées avec le but de retourner la première page aussi vite
            que possible. Ce but fonctionne bien lorsque l'affichage est
            contrôlé par un utilisateur qui peut annuler une requête après
            avoir vu la première page des données. Les requêtes sont codées
            avec une clause "OPTIMIZE nnn ROWS" afin de 
            réussir le but spécifié par la clause.
          
           DB2_ALL_IO Toutes les requêtes sont optimisées
           avec le but de retourner l'entière requête dans le plus petit
           intervalle de temps. Ceci est une bonne option lorsque l'affichage
           d'une requête est en train d'être écrit vers un fichier ou un
           rapport ou encore lorsque l'interface met en queue les données. Les
           requêtes sont codées avec une clause "OPTIMIZE FOR nnn ROWS" afin de
           réussir le but spécifié par la clause. Ceci est l'opération par
           défaut.
          
i5_dbcs_alloc
           La valeur DB2_I5_DBCS_ALLOC_ON active le canevas
           d'allocation DB2 6X pour l'accroissement des tailles des colonnes.
          
           La valeur DB2_I5_DBCS_ALLOC_OFF désactive le
           canevas d'allocation DB2 6X pour l'accroissement des tailles des
           colonnes.
          
           Note : la configuration php.ini
           ibm_db2.i5_dbcs_alloc==0 ou
           DB2_I5_DBCS_ALLOC_OFF est par défaut mais peut
           être dérivée avec l'option i5_dbcs_alloc.
          
i5_date_fmt
           DB2_I5_FMT_ISO : le format de date de l'organisation internationale de
           normalisation (ISO) "yyyy-mm-dd" est utilisé. Ceci est la valeur par
           défaut.
          
           DB2_I5_FMT_USA : le format de date des
           États-Unis "mm/dd/yyyy" est utilisé.
          
           DB2_I5_FMT_EUR : le format de date Européen
           "dd.mm.yyyy" est utilisé.
          
           DB2_I5_FMT_JIS : le format de date de
           l'industrie japonaise des standards "yyyy-mm-dd" est utilisé.
          
           DB2_I5_FMT_MDY : le format de date "mm/dd/yyyy"
           est utilisé.
          
           DB2_I5_FMT_DMY : le format de date "dd/mm/yyyy"
           est utilisé.
          
           DB2_I5_FMT_YMD : le format de date "yy/mm/dd" est
           utilisé.
          
           DB2_I5_FMT_JUL : le format de date Julien "yy/ddd"
           est utilisé.
          
           DB2_I5_FMT_JOB : le valeur par défaut est utilisée.
          
i5_date_sep
           DB2_I5_SEP_SLASH : un slash ( / ) est utilisé
           en tant que séparateur de date.
           Ceci est la valeur par défaut.
          
           DB2_I5_SEP_DASH : un tiret ( : ) est utilisé en
           tant que séparateur de date.
          
           DB2_I5_SEP_PERIOD : un point ( . ) est utilisé
           en tant que séparateur de date.
          
           DB2_I5_SEP_COMMA : une virgule ( , ) est
           utilisée en tant que séparateur de date.
          
           DB2_I5_SEP_BLANK : un espace blanc est utilisé
           en tant que séparateur de date.
          
           DB2_I5_SEP_JOB : la valeur par défaut est
           utilisée.
          
i5_time_fmt
           DB2_I5_FMT_ISO : le format de l'heure de
           l'organisation internationale de normalisation "hh.mm.ss" est
           utilisé. Ceci est la valeur par défaut.
          
           DB2_I5_FMT_USA : le format de l'heure des
           États-Unis "hh:mmxx" est utilisé, où "xx" 
           vaut "AM" ou "PM".
          
           DB2_I5_FMT_EUR : le format de l'heure Européen
           "hh.mm.ss" est utilisé.
          
           DB2_I5_FMT_JIS : le format de l'heure de
           l'industrie japonaise des standards "hh:mm:ss" est utilisé.
          
           DB2_I5_FMT_HMS : le format "hh:mm:ss" est utilisé.
          
i5_time_sep
           DB2_I5_SEP_COLON : un deux-points ( : ) est
           utilisé en tant que séparateur de temps. Ceci est la valeur par
           défaut.
          
           DB2_I5_SEP_PERIOD : un point ( . ) est utilisé
           en tant que séparateur de temps.
          
           DB2_I5_SEP_COMMA : une virgule ( , ) est
           utilisée en tant que séparateur de temps.
          
           DB2_I5_SEP_BLANK : un espace blanc est utilisé
           en tant que séparateur de temps.
          
           DB2_I5_SEP_JOB : la valeur par défaut est
           utilisée.
          
i5_decimal_sep
           DB2_I5_SEP_PERIOD : un point ( . ) est utilisé
           en tant que séparateur de décimale. Ceci est la valeur par défaut.
          
           DB2_I5_SEP_COMMA : une virgule ( , ) est
           utilisée en tant que séparateur de décimale.
          
           DB2_I5_SEP_JOB : la valeur par défaut est
           utilisée.
          
La nouvelle option i5/OS suivante est disponible depuis la version ibm_db2 1.8.0 et suivantes.
i5_liblUne chaîne indiquant la liste a utilisé pour résoudre les références de fichiers non qualifiés. Spécifiez la liste en séparant les valeurs par un espace, comme ceci : 'i5_libl'=>"MYLIB YOURLIB ANYLIB".
Note:
i5_liblappelleqsys2/qcmdexc('cmd',cmdlen), qui n'est disponible que depuis i5/OS V5R4.
   Retourne la ressource de connexion si la tentative de connexion réussie. Si
   la tentative de connexion échoue, db2_connect() retourne
   false.
  
Exemple #1 Création d'une connexion cataloguée
     Les connexions cataloguées nécessitent que vous ayez préalablement
     catalogué la base de données spécifiée à l'aide du processeur de ligne de
     commandes DB2 ("Command Line Processor" : cLP) ou avec l'assistant de
     configuration de DB2.
    
<?php
$database = 'EXEMPLE';
$user = 'db2inst1';
$password = 'ibmdb2';
$conn = db2_connect($database, $user, $password);
if ($conn) {
    echo "Connexion réussie.";
    db2_close($conn);
}
else {
    echo "Connexion échouée.";
}
?>
L'exemple ci-dessus va afficher :
Connexion réussie.
Exemple #2 Création d'une connexion non cataloguée
Une connexion non cataloguées vous permet de vous connecter dynamiquement à une base de données.
<?php
$database = 'EXEMPLE';
$user = 'db2inst1';
$password = 'ibmdb2';
$hostname = 'localhost';
$port = 50000;
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" .
  "HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$password;";
$conn = db2_connect($conn_string, '', '');
if ($conn) {
    echo "Connexion réussie.";
    db2_close($conn);
}
else {
    echo "Connexion échouée.";
}
?>
L'exemple ci-dessus va afficher :
Connexion réussie.
Exemple #3 Création d'une connexion avec autocommit désactivé par défaut
Le fait de passer un tableau d'option à db2_connect() vous permet de modifier le comportement par défaut de la connexion.
<?php
$database = 'EXEMPLE';
$user = 'db2inst1';
$password = 'ibmdb2';
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF);
$conn = db2_connect($database, $user, $password, $options);
if ($conn) {
    echo "Connexion réussie.\n";
    if (db2_autocommit($conn)) {
         echo "Autocommit est activé.\n";
    }
    else {
         echo "Autocommit est désactivé.\n";
    }
    db2_close($conn);
}
else {
    echo "Connexion échouée.";
}
?>
L'exemple ci-dessus va afficher :
Connexion réussie. Autocommit est désactivé.
Exemple #4 Meilleure performance i5/OS
Pour réussir à utiliser les meilleures performance de votre i5/OS ibm_db2 1.5.1, l'application PHP utilise l'hôte par défaut, le userid et le mot de passer pour votre db2_connect().
<?php
  $library = "ADC";
  $i5 = db2_connect("", "", "", array("i5_lib"=>"qsys2"));
  $result = db2_exec($i5, 
       "select * from systables where table_schema = '$library'");
  while ($row = db2_fetch_both($result)) {               
     echo $row['TABLE_NAME']."</br>";                     
  }                                                      
  db2_close($i5);
?>
L'exemple ci-dessus va afficher :
ANIMALS NAMES PICTURES
Exemple #5 Utilisation du contexte
L'exemple suivant montre comment activer le contexte, changer d'utilisateur et récupérer l'ID de l'utilisateur courant.
<?php
$database = "SAMPLE";
$hostname = "localhost";
$port = 50000;
$authID = "db2inst1";
$auth_pass = "ibmdb2";
$tc_user = "tcuser";
$tc_pass = "tcpassword";
$dsn = "DATABASE=$database;HOSTNAME=$hostname;PORT=$port;
  PROTOCOL=TCPIP;UID=$authID;PWD=$auth_pass;";
$options = array ("trustedcontext" => DB2_TRUSTED_CONTEXT_ENABLE);
$tc_conn = db2_connect($dsn, "", "", $options);
if($tc_conn) {
    echo "Explicit trusted connection succeeded.\n";
    if(db2_get_option($tc_conn, "trustedcontext")) {
        $userBefore = db2_get_option($tc_conn, "trusted_user");
        //Code en tant qu'utilisateur 1.
        //Modification en l'utilisateur de confiance.
        $parameters = array("trusted_user" => $tc_user, 
          "trusted_password" => $tcuser_pass);
        $res = db2_set_option ($tc_conn, $parameters, 1);
        $userAfter = db2_get_option($tc_conn, "trusted_user");
        //Code en tant qu'utilisateur de confiance.
        if($userBefore != $userAfter) {
            echo "L'utilisateur a changé." . "\n";
        }
    }
    db2_close($tc_conn);
}
else {
    echo "Le changement de contexte de connexion a échoué.\n";
}
?>
L'exemple ci-dessus va afficher :
Le changement de contexte de connexion a échoué. L'utilisateur a changé.