db2_server_info
db2_special_columns
Fonctions IBM DB2
PHP Manual

# db2_set_option

(PECL ibm_db2 >= 1.0.0)

db2_set_option — Fixe des options pour une connexion ou des ressources

### Description

bool db2_set_option ( resource `$resource` , array `$options` , int `$type` )

Fixe des options pour une ressource ou une connexion. Vous ne pouvez pas fixer des options pour un jeu de résultats.

### Liste de paramètres

`resource`

  Une ressource valide comme retournée par db2_prepare() ou une connexion valide comme retournée par db2_connect() ou db2_pconnect().

`options`

  Un tableau associatif contenant des options de ressources ou de connexion valides. Ce paramètre peut être utilisé pour changer les valeurs d'autocommit, types de curseur (flottant ou à avance seule) et spécifier la casse des noms de colonne (minuscule, majuscule ou naturelle) qui apparaîtra dans le jeu de résultats.

  `autocommit`

    Passer DB2_AUTOCOMMIT_ON active l'autocommit pour la connexion spécifiée.

    Passer DB2_AUTOCOMMIT_OFF désactive l'autocommit pour la connexion spécifiée.

  `cursor`

    Passer DB2_FORWARD_ONLY spécifie un curseur à avance seule pour une ressource. Ceci est le type de défaut pour un curseur et est supporté par tous les serveurs de base de données.

    Passer DB2_SCROLLABLE spécifie un curseur flottant pour une ressource. Les curseurs flottants permettent aux lignes de résultats d'être accessibles dans un ordre non séquentiel. Ce type de curseur est supporté seulement par les bases de données IBM DB2 Universal Database.

  `binmode`

    Passer DB2_BINARY spécifie que des données binaires seront retournées comme telles. Ceci est le mode par défaut. Ceci est équivalent à la configuration ibm_db2.binmode=1 dans php.ini.

    Passer DB2_CONVERT spécifie que les données binaires seront converties en encodage hexadécimal et seront retourné ainsi. Ceci est équivalent à la configuration ibm_db2.binmode=2 dans php.ini.

    Passer DB2_PASSTHRU spécifie que les données binaires seront converties en `NULL`. Ceci est équivalent à la configuration ibm_db2.binmode=3 dans php.ini.

  `db2_attr_case`

    Passer DB2_CASE_LOWER spécifie que les noms des colonnes dans le jeu de résultats seront retournés en minuscule.

    Passer DB2_CASE_UPPER spécifie que les noms des colonnes dans le jeu de résultats seront retournés en majuscule.

    Passer DB2_CASE_NATURAL spécifie que les noms de colonnes dans le jeu de résultats seront retournés en casse naturelle.

  `deferred_prepare`

    Passer DB2_DEFERRED_PREPARE_ON active la préparation déférée sur la ressource de requête spécifiée.

    Passer DB2_DEFERRED_PREPARE_OFF désactive la préparation déférée sur la ressource de requête spécifiée.

  Les nouvelles options suivantes i5/OS sont disponibles depuis la version 1.5.1 de ibm_db2. Ces options s'appliquent uniquement lorsque PHP et ibm_db2 fonctionnent nativement sur un système i5.

  `i5_fetch_only`

    DB2_I5_FETCH_ON : les curseurs sont en lecture seule et ne peuvent être utilisé pour positionner des mises à jour et des suppressions. Ceci est la valeur par défaut a moins que la variable d'environnement SQL_ATTR_FOR_FETCH_ONLY ait été mis à SQL_FALSE.

    DB2_I5_FETCH_OFF : les curseurs peuvent être positionnés pour mises à jour et suppressions.

  Les nouvelles options suivantes sont disponibles depuis ibm_db2 version 1.8.0 et suivants.

  `rowcount`

    DB2_ROWCOUNT_PREFETCH_ON - Le client peut demander un comptage complet des lignes avant de les récupérer, ce qui signifie que la fonction db2_num_rows() retourne le nombre de lignes sélectionnées même si un curseur ROLLFORWARD_ONLY est utilisé.

    DB2_ROWCOUNT_PREFETCH_OFF - Le client ne peut pas demander un comptage complet des lignes avant de les récupérer.

  Les options suivantes sont nouvelles, et disponibles depuis ibm_db2 version 1.7.0.

  `trusted_user`

    Pour basculer l'utilisateur vers un utilisateur de confiance, indiquez l'identifiant utilisateur sous forme de chaîne, de l'utilisateur de confiance que vous voulez utiliser. Cette option peut être configurée au niveau de la connexion uniquement. Pour utiliser cette option, un contexte de confiance doit être activé sur la ressource de connexion.

  `trusted_password`

    Le mot de passe, sous forme de chaîne, qui correspond à l'utilisateur de confiance.

  Les options suivantes sont nouvelles, et disponibles depuis ibm_db2 version 1.6.0. Ces options sont pratiques pour obtenir des informations de suivis, accessibles via db2_get_option().

  > Note: Lorsque la valeur de chaque option est sur le point d'être définie, quelques serveurs peuvent ne pas gérer la totalité de la longueur fournie et peuvent tronquer la valeur.
  > Pour s'assurer que les données spécifiées dans chaque option seront converties correctement lorsqu'elles seront transmises au système, utilisez seulement les caractères de A à Z, 0 à 9, les soulignés (_) et les points (.).

  `userid`

    SQL_ATTR_INFO_USERID : un pointeur vers une chaîne de caractères terminée par `NULL` utilisée pour identifier l'ID utilisateur du client envoyé au serveur de base de données, lors de la connexion DB2.

    > Note: DB2 pour les serveurs z/OS et OS/390 supporte une longueur supérieure à 16 caractères. L'ID utilisateur ne doit pas être confondu avec l'ID utilisateur d'identification, il est utilisé pour les processus d'identification uniquement et non pour ceux d'autorisation.

  `acctstr`

    SQL_ATTR_INFO_ACCTSTR : un pointeur vers une chaîne de caractères terminée par `NULL` utilisée pour identifier le compte du client à envoyer au serveur de base de données lors de la connexion DB2..

    > Note: DB2 pour les serveurs z/OS et OS/390 supporte une longueur supérieure à 200 caractères.

  `applname`

    SQL_ATTR_INFO_APPLNAME : un pointeur vers une chaîne de caractères terminée par `NULL` utilisée pour identifier le nom de l'application client à envoyer au serveur de base de données lors de la connexion DB2.

    > Note: DB2 pour les serveurs z/OS and OS/390 supportent une longueur supérieure à 32 caractères.

  `wrkstnname`

    SQL_ATTR_INFO_WRKSTNNAME : un pointeur vers une chaîne de caractères terminée par `NULL` utilisée pour identifier le nom de la station à envoyer au serveur de base de données lors de la connexion DB2.

    > Note: DB2 pour les serveurs z/OS et OS/390 supportent une longueur supérieure à 18 caractères.

`type`

  Un entier qui spécifie le type de ressource qui a été passé à la fonction. Le type de ressource et valeur doit correspondre.

  Passer 1 en tant que valeur spécifie qu'une ressource de connexion a été passée à la fonction.

  Passer n'importe quel entier différent de 1 en tant que valeur spécifie qu'une ressource a été passée à la fonction.

Le tableau suivant spécifie quelles options sont compatibles avec quels types de ressources :

Matrice ressource paramètre
Clé | Valeur | Type de ressource
--- | --- | ---
|  | Connexion | Requête | Jeu de résultats
autocommit | DB2_AUTOCOMMIT_ON | X | - | -
autocommit | DB2_AUTOCOMMIT_OFF | X | - | -
cursor | DB2_SCROLLABLE | - | X | -
cursor | DB2_FORWARD_ONLY | - | X | -
binmode | DB2_BINARY | X | X | -
binmode | DB2_CONVERT | X | X | -
binmode | DB2_PASSTHRU | X | X | -
db2_attr_case | DB2_CASE_LOWER | X | X | -
db2_attr_case | DB2_CASE_UPPER | X | X | -
db2_attr_case | DB2_CASE_NATURAL | X | X | -
deferred_prepare | DB2_DEFERRED_PREPARE_ON | - | X | -
deferred_prepare | DB2_DEFERRED_PREPARE_OFF | - | X | -
i5_fetch_only | DB2_I5_FETCH_ON | - | X | -
rowcount | DB2_ROWCOUNT_PREFETCH_ON | - | X | -
rowcount | DB2_ROWCOUNT_PREFETCH_OFF | - | X | -
trusted_user | <USER NAME> (String) | X | - | -
trusted_password | <PASSWORD> (String) | X | - | -
i5_fetch_only | DB2_I5_FETCH_OFF | - | X | -
userid | SQL_ATTR_INFO_USERID | X | X | -
acctstr | SQL_ATTR_INFO_ACCTSTR | X | X | -
applname | SQL_ATTR_INFO_APPLNAME | X | X | -
wrkstnname | SQL_ATTR_INFO_WRKSTNNAME | X | X | -

### Valeurs de retour

Cette fonction retourne `TRUE` en cas de succès ou `FALSE` si une erreur survient.

### Exemples

Exemple #1 Fixer un paramètre à une ressource de connexion

`<?php
/* Paramètres de Connexion */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';
/* Chaînes de caractères de Connexion */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";
/* Récupération de la Ressource de Connexion */
$conn = db2_connect($conn_string, '', '');
/* Crée le tableau associatif d'options avec des paires clé-valeur valides */
$options = array('autocommit' => DB2_AUTOCOMMIT_ON);
/* Appel de la fonction en utilisant le type correct de ressource, le tableau
* d'options et la valeur type */
$result = db2_set_option($conn, $options, 1);
/* Vérifie si toutes les options peuvent être fixées correctement */
if($result)
{
echo 'Options fixées correctement';
}
else
{
echo 'Impossible de fixer les options';
}
?>`

L'exemple ci-dessus va afficher :

    Options fixées correctement

Exemple #2 Fixe des paramètres multiples avec une ressource de connexion

`<?php
/* Paramètres de Connexion */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';
/* Chaînes de caractères de Connexion */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";
/* Récupération de la Ressource de Connexion */
$conn = db2_connect($conn_string, '', '');
/* Crée le tableau associatif d'options avec des paires clé-valeur valides */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
'binmode' => DB2_PASSTHRU,
'db2_attr_case' => DB2_CASE_UPPER,
'cursor' => DB2_SCROLLABLE);
/* Appel de la fonction en utilisant le type correct de ressource, le tableau
* d'options et la valeur type */
$result = db2_set_option($conn, $options, 1);
/* Vérifie si toutes les options peuvent être fixées correctement */
if($result)
{
echo 'Options fixées correctement';
}
else
{
echo 'Impossible de fixer les options';
}
?>`

L'exemple ci-dessus va afficher :

    Options fixées correctement

Exemple #3 Fixe des paramètres multiples avec une clé invalide

`<?php
/* Paramètres de Connexion */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';
/* Chaînes de caractères de Connexion */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";
/* Récupération de la Ressource de Connexion */
$conn = db2_connect($conn_string, '', '');
/* Crée le tableau associatif d'options avec des paires clé-valeur valides */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
'MY_INVALID_KEY' => DB2_PASSTHRU,
'db2_attr_case' => DB2_CASE_UPPER,
'cursor' => DB2_SCROLLABLE);
/* Appel de la fonction en utilisant le type correct de ressource, le tableau
* d'options et la valeur type */
$result = db2_set_option($conn, $options, 1);
/* Vérifie si toutes les options peuvent être fixées correctement */
if($result)
{
echo 'Options fixées correctement';
}
else
{
echo 'Impossible de fixer les options';
}
?>`

L'exemple ci-dessus va afficher :

    Impossible de fixer les options

Exemple #4 Fixe des paramètres multiples avec une valeur invalide

`<?php
/* Paramètres de Connexion */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';
/* Chaînes de caractères de Connexion */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";
/* Récupération de la Ressource de Connexion */
$conn = db2_connect($conn_string, '', '');
/* Crée le tableau associatif d'options avec des paires clé-valeur valides */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
'binmode' => 'INVALID_VALUE',
'db2_attr_case' => DB2_CASE_UPPER,
'cursor' => DB2_SCROLLABLE);
/* Appel de la fonction en utilisant le type correct de ressource, le tableau
* d'options et la valeur type */
$result = db2_set_option($conn, $options, 1);
/* Vérifie si toutes les options peuvent être fixées correctement */
if($result)
{
echo 'Options fixées correctement';
}
else
{
echo 'Impossible de fixer les options';
}
?>`

L'exemple ci-dessus va afficher :

    Impossible de fixer les options

Exemple #5 Fixe des paramètres multiples avec une ressource de connexion et un mauvais type

`<?php
/* Paramètres de Connexion */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';
/* Chaînes de caractères de Connexion */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";
/* Récupération de la Ressource de Connexion */
$conn = db2_connect($conn_string, '', '');
/* Crée le tableau associatif d'options avec des paires clé-valeur valides */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
'binmode' => DB2_PASSTHRU,
'db2_attr_case' => DB2_CASE_UPPER,
'cursor' => DB2_SCROLLABLE);
/* Appel de la fonction en utilisant le type correct de ressource, le tableau
* d'options et la valeur type invalide */
$result = db2_set_option($conn, $options, 2);
/* Vérifie si toutes les options peuvent être fixées correctement */
if($result)
{
echo 'Options fixées correctement';
}
else
{
echo 'Impossible de fixer les options';
}
?>`

L'exemple ci-dessus va afficher :

    Impossible de fixer les options

Exemple #6 Fixe des paramètres multiples avec une mauvaise ressource

`<?php
/* Paramètres de Connexion */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';
/* Chaînes de caractères de Connexion */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";
/* Récupération de la Ressource de Connexion */
$conn = db2_connect($conn_string, '', '');
/* Crée le tableau associatif d'options avec des paires clé-valeur valides */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
'binmode' => DB2_PASSTHRU,
'db2_attr_case' => DB2_CASE_UPPER,
'cursor' => DB2_SCROLLABLE);
$stmt = db2_prepare($conn, 'SELECT * FROM EMPLOYEE');
/* Appel de la fonction en utilisant le type incorrect de ressource, mais le tableau
* d'options et la valeur type valide */
$result = db2_set_option($stmt, $options, 1);
/* Vérifie si toutes les options peuvent être fixées correctement */
if($result)
{
echo 'Options fixées correctement';
}
else
{
echo 'Impossible de fixer les options';
}
?>`

L'exemple ci-dessus va afficher :

    Impossible de fixer les options

Exemple #7 Tout mettre ensemble

`<?php
/* Paramètres de Connexion */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';
/* Chaînes de caractères de Connexion */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";
/* Récupération de la Ressource de Connexion */
$conn = db2_connect($conn_string, '', '');
/* Crée le tableau associatif d'options avec des paires clé-valeur valides */
$options = array('db2_attr_case' => DB2_CASE_LOWER,
'cursor' => DB2_SCROLLABLE);
$stmt = db2_prepare($conn, 'SELECT * FROM EMPLOYEE WHERE EMPNO = ? OR EMPNO = ?');
/* Appel de la fonction en utilisant le type correct de ressource, le tableau
* d'options et la valeur type */
$option_result = db2_set_option($stmt, $options, 2);
$result = db2_execute($stmt, array('000130', '000140'));
/* Récupère la ligne 2 avant la ligne 1 puisque nous avons un curseur flottant */
print_r(db2_fetch_assoc($stmt, 2));
print '<br /><br />';
print_r(db2_fetch_assoc($stmt, 1));
?>`

L'exemple ci-dessus va afficher :

    Array
    (
         [empno] => 000140
         [firstnme] => HEATHER
         [midinit] => A
         [lastname] => NICHOLLS
         [workdept] => C01
         [phoneno] => 1793
         [hiredate] => 1976-12-15
         [job] => ANALYST
         [edlevel] => 18
         [sex] => F
         [birthdate] => 1946-01-19
         [salary] => 28420.00
         [bonus] => 600.00
         [comm] => 2274.00
    )

    Array
    (
         [empno] => 000130
         [firstnme] => DELORES
         [midinit] => M
         [lastname] => QUINTANA
         [workdept] => C01
         [phoneno] => 4578
         [hiredate] => 1971-07-28
         [job] => ANALYST
         [edlevel] => 16
         [sex] => F
         [birthdate] => 1925-09-15
         [salary] => 23800.00
         [bonus] => 500.00
         [comm] => 1904.00
    )

Exemple #8 Les curseurs i5/OS sont en lecture seule

`<?php
$conn = db2_connect("", "", "", array("i5_lib"=>"nobody"));
$stmt = db2_prepare($conn, 'select * from names where first = ?');
$name = "first2";
db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
$options = array("i5_fetch_only"=>DB2_I5_FETCH_ON);
db2_set_option($stmt,$options,0);
if (db2_execute($stmt)) {
while ($row = db2_fetch_array($stmt)) {
echo "{$row[0]} {$row[1]}";
}
}
?>`

L'exemple ci-dessus va afficher :

    first2 last2

### Voir aussi

- db2_connect() - Retourne une connexion à une base de données
- db2_pconnect() - Retourne une connexion persistante à une base de données
- db2_exec() - Exécute une requête SQL directement
- db2_prepare() - Prépare une requête SQL à être exécutée
- db2_cursor_type() - Retourne le type de curseur utilisé par une ressource

db2_server_info
db2_special_columns
Fonctions IBM DB2
PHP Manual