(PECL ibm_db2:1.0-1.6.2)
db2_set_option — Fixe des options pour une connexion ou des ressources
Fixe des options pour une ressource ou une connexion. Vous ne pouvez pas fixer des options pour un jeu de résultats.
Une ressource valide comme retournée par db2_prepare() ou une connexion valide comme retournée par db2_connect() ou db2_pconnect().
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.
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.
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.
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.
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.
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.
Note: Note
Les anciennes versions de ibm_db2 ne supportent pas ces nouvelles options.
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 options suivantes sont disponibles depuis ibm_db2 version 1.6.0. Elles fournissent des informations intéressantes sur les traces, qui peuvent être accessibles durant l'exécution de la fonction db2_get_option().
Note: Note
Les versions antérieurs d'ibm_db2 ne supportent pas ces options.
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 (.).
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: 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.
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: Note
DB2 pour les serveurs z/OS et OS/390 supporte une longueur supérieure à 200 caractères.
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: Note
DB2 pour les serveurs z/OS and OS/390 supportent une longueur supérieure à 32 caractères.
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: Note
DB2 pour les serveurs z/OS et OS/390 supportent une longueur supérieure à 18 caractères.
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 non égal à 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 :
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 | - |
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 | - |
Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.
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