PHP Australia Conference 2015

db2_set_option

(PECL ibm_db2 >= 1.0.0)

db2_set_optionFixe 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 minuscules.

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

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$options1);

/* 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$options1);

/* 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$options1);

/* 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$options1);

/* 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$options2);

/* 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$options1);

/* 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$options2);
$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($stmt2));
print 
'<br /><br />';
print_r(db2_fetch_assoc($stmt1));

?>

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($stmt1"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

add a note add a note

User Contributed Notes 1 note

up
0
rtejpar at ca dot ibm dot com
7 years ago
Examples 3 and 4 should output 'Options Set Successfully.'  This is because, only a single option's key/value is set incorrectly (other options are still correct), hence the function must return successfully. (Instead a PHP warning will most probably be issued).
To Top