(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
;
database
Le nom de la base de données.
hostname
L'adresse Internet ou IP du serveur de base de données.
port
Le port TCP/IP sur lequel la base de données écoute les connexions.
username
Le nom d'utilisateur avec lequel vous vous connectez à la base de données.
password
Le mot de passe avec lequel vous vous connectez à la base de données.
username
Le 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.
password
Le 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.
options
Un 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.
trustedcontext
Le 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_lib
Un 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_COMMIT
est 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_libl
Une 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_libl
appelleqsys2/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é.