(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.
databasedatabase
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=database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password;
où les paramètres représentent les valeurs suivantes :Note:
Lors de la connexion à Db2 sur IBM i, les appels système sous-jacents » SQLDriverConnect, n'acceptent que DSN, UID et PWD pour la » chaîne de connexion. Comme suit :
DSN=database;UID=username;PWD=password;
databasehostnameportusernamepasswordusernamenull ou une chaîne vide.
passwordnull 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 :
autocommitDB2_AUTOCOMMIT_ON active l'autocommit
sur cette connexion.
La valeur DB2_AUTOCOMMIT_OFF désactive le
autocommit pour cette connexion.
DB2_ATTR_CASEDB2_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.
CURSORDB2_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.
trustedcontextdb2 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_libi5_namingDB2_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_commiti5_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
sérialisées. Lecture ancienne, non répétitive et fictive n'est
pas possible.
i5_query_optimizeDB2_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_allocDB2_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_fmtDB2_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_sepDB2_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_fmtDB2_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_sepDB2_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_sepDB2_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_liblNote:
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é.