(PECL ibm_db2 >= 1.0.0)
db2_connect — Возвращает соединение с базой данных
$database
,$username
,$password
,$options
= []Создаёт новое соединение с базой данных IBM DB2 Universal Database, IBM Cloudscape или Apache Derby database.
database
Для каталогизированного соединения с базой данных
database
представляет собой псевдоним базы данных
в клиентском каталоге DB2.
Для некаталогизированного подключения к базе данных
database
представляет собой полную строку
подключения в следующем формате:
DATABASE=где параметры представляют следующие значения:database
;HOSTNAME=hostname
;PORT=port
;PROTOCOL=TCPIP;UID=username
;PWD=password
;
database
Имя базы данных.
hostname
Имя хоста или IP-адрес сервера базы данных.
port
Порт TCP/IP, который используется базой данных для принятия запросов.
username
Имя пользователя, под которым происходит подключение к базе данных.
password
Пароль, с которым происходит подключение к базе данных.
username
Имя пользователя, под которым происходит подключение к базе данных.
Для некаталогизированных соединений необходимо передать значение null
или пустую строку.
password
Пароль, с которым происходит подключение к базе данных.
Для некаталогизированных соединений необходимо передать значение null
или пустую строку.
options
Ассоциативный массив параметров подключения, которые влияют на поведение подключения, где допустимые ключи массива включают:
autocommit
Передача значения DB2_AUTOCOMMIT_ON
включает
автоматическую фиксацию (autocommit) для этого дескриптора соединения.
Передача значения DB2_AUTOCOMMIT_OFF
выключает
автоматическую фиксацию (autocommit) для этого дескриптора соединения.
DB2_ATTR_CASE
Передача значения DB2_CASE_NATURAL
указывает,
что имена столбцов возвращаются в естественном регистре.
Передача значения DB2_CASE_LOWER
указывает,
что имена столбцов возвращаются в нижнем регистре.
Передача значения DB2_CASE_UPPER
указывает,
что имена столбцов возвращаются в верхнем регистре.
CURSOR
Передача значения DB2_FORWARD_ONLY
задаёт курсор,
который двигается только вперёд, для ресурса оператора. Данный тип
курсора используется по умолчанию, он поддерживается всеми серверами
баз данных.
Передача значения DB2_SCROLLABLE
задаёт
прокручиваемый курсор для ресурса оператора. Этот режим включает
произвольный доступ к строкам в наборе результатов, но в настоящее
время поддерживается только IBM DB2 Universal Database.
Данная новая опция доступна в ibm_db2 версии 1.7.0 и новее.
trustedcontext
Передача значения DB2_TRUSTED_CONTEXT_ENABLE включает доверенный контекст для этого дескриптора соединения. Этот параметр нельзя установить с помощью db2_set_option().
Этот ключ работает только в том случае, если база данных каталогизирована (даже если база данных является локальной) или если будет указан полный DSN при создании соединения.
Чтобы каталогизировать базу данных, используйте следующие команды:
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
Данные новые опции i5/OS доступны в ibm_db2 версии 1.5.1 и новее.
i5_lib
Символьное значение, указывающее библиотеку по умолчанию, которая будет использоваться для разрешения неквалифицированных ссылок на файлы. Это недопустимо, если соединение использует режим именования системы.
i5_naming
Значение DB2_I5_NAMING_ON
включает режим
именования системы DB2 UDB CLI iSeries. Файлы квалифицируются с
помощью косой черты (/) в качестве разделителя. Неквалифицированные
файлы разрешаются с использованием списка библиотек для работы.
Значение DB2_I5_NAMING_OFF
выключает режим
именования по умолчанию DB2 UDB CLI, который является именованием SQL.
Файлы квалифицируются с использованием точки (.) в качестве
разделителя. Неквалифицированные файлы разрешаются с использованием
либо библиотеки по умолчанию, либо текущего идентификатора
пользователя.
i5_commit
Атрибут i5_commit
должен быть установлен перед
вызовом db2_connect(). Если значение изменяется
после того, как соединение было установлено, и соединение установлено
с удалённым источником данных, изменение не вступит в силу до
следующего успешного вызова db2_connect() для
дескриптора соединения.
Замечание:
Параметр php.ini
ibm_db2.i5_allow_commit
==0 илиDB2_I5_TXN_NO_COMMIT
используется по умолчанию, но может быть изменён с помощью параметраi5_commit
.
DB2_I5_TXN_NO_COMMIT
- Контроль транзакций не
используется.
DB2_I5_TXN_READ_UNCOMMITTED
- Возможны грязные
чтения, неповторяющиеся чтения и фантомы.
DB2_I5_TXN_READ_COMMITTED
- Грязное чтение невозможно.
Возможны неповторяющиеся чтения и фантомы
DB2_I5_TXN_REPEATABLE_READ
- Грязные чтения и
неповторяющиеся чтения невозможны. Возможны фантомы.
DB2_I5_TXN_SERIALIZABLE
- Транзакции сериализуемы.
Грязные чтения, неповторяющиеся чтения и фантомы невозможны.
i5_query_optimize
DB2_FIRST_IO
- Все запросы оптимизированы с целью
максимально быстрого возврата первой страницы вывода. Эта цель
хорошо работает, когда вывод контролируется пользователем, который,
скорее всего, отменит запрос после просмотра первой страницы
выходных данных. Запросы, закодированные с предложением
OPTIMIZE FOR nnn ROWS, учитывают цель, указанную в предложении.
DB2_ALL_IO
- Все запросы оптимизированы с целью
выполнить весь запрос до завершения в кратчайшие сроки. Это хороший
вариант, когда выходные данные запроса записываются в файл или отчёт,
или когда интерфейс ставит выходные данные в очередь. Запросы,
закодированные с предложением OPTIMIZE FOR nnn ROWS, учитывают цель,
указанную в предложении. Это значение по умолчанию.
i5_dbcs_alloc
Значение DB2_I5_DBCS_ALLOC_ON
включает схему
распределения DB2 6X для увеличения размера столбца преобразования DBCS.
Значение DB2_I5_DBCS_ALLOC_OFF
отключает схему
распределения DB2 6X для увеличения размера столбца преобразования DBCS.
Замечание: параметр php.ini
ibm_db2.i5_dbcs_alloc
== 0 или
DB2_I5_DBCS_ALLOC_OFF
является значением по
умолчанию, но его можно изменить с помощью параметра
i5_dbcs_alloc
.
i5_date_fmt
DB2_I5_FMT_ISO
- Используется формат даты
Международной организации по стандартизации (ISO) (yyyy-mm-dd).
Это значение по умолчанию.
DB2_I5_FMT_USA
- Используется формат даты США
(mm/dd/yyyy).
DB2_I5_FMT_EUR
- Используется европейский формат
даты (dd.mm.yyyy).
DB2_I5_FMT_JIS
- Используется формат даты японского
промышленного стандарта (yyyy-mm-dd).
DB2_I5_FMT_MDY
- Используется формат даты
mm/dd/yyyy.
DB2_I5_FMT_DMY
- Используется формат даты
dd/mm/yyyy.
DB2_I5_FMT_YMD
- Используется формат даты yy/mm/dd.
DB2_I5_FMT_JUL
- Используется юлианский формат
даты (yy/ddd).
DB2_I5_FMT_JOB
- Используется задание по умолчанию.
i5_date_sep
DB2_I5_SEP_SLASH
- В качестве разделителя даты
используется косая черта ( / ). Это значение по умолчанию.
DB2_I5_SEP_DASH
- В качестве разделителя даты
используется тире ( - ).
DB2_I5_SEP_PERIOD
- В качестве разделителя даты
используется точка ( . ).
DB2_I5_SEP_COMMA
- В качестве разделителя даты
используется запятая ( , ).
DB2_I5_SEP_BLANK
- В качестве разделителя даты
используется пробел.
DB2_I5_SEP_JOB
- Используется задание по умолчанию.
i5_time_fmt
DB2_I5_FMT_ISO
- Используется формат времени
Международной организации по стандартизации (ISO) (hh.mm.ss). Это
значение по умолчанию.
DB2_I5_FMT_USA
- Используется формат времени США
(hh:mmxx, где xx - это AM или PM).
DB2_I5_FMT_EUR
- Используется европейский формат
времени (hh.mm.ss).
DB2_I5_FMT_JIS
- Используется японский промышленный
стандартный формат времени (hh:mm:ss).
DB2_I5_FMT_HMS
- Используется формат hh:mm:ss.
i5_time_sep
DB2_I5_SEP_COLON
- В качестве разделителя
времени используется двоеточие ( : ). Это значение по умолчанию.
DB2_I5_SEP_PERIOD
- В качестве разделителя
времени используется точка ( . ).
DB2_I5_SEP_COMMA
- В качестве разделителя
времени используется запятая ( , ).
DB2_I5_SEP_BLANK
- В качестве разделителя времени
используется пробел.
DB2_I5_SEP_JOB
- Используется задание по умолчанию.
i5_decimal_sep
DB2_I5_SEP_PERIOD
- В качестве десятичного
разделителя используется точка ( . ). Это значение по умолчанию.
DB2_I5_SEP_COMMA
- В качестве десятичного
разделителя используется запятая ( , ).
DB2_I5_SEP_JOB
- Используется задание по умолчанию.
Данная новая опция i5/OS доступна в ibm_db2 версии 1.8.0 и новее.
i5_libl
Символьное значение, указывающее список библиотек, который будет использоваться для разрешения неквалифицированных ссылок на файлы. Укажите элементы списка библиотек, разделённые пробелами 'i5_libl'=>"MYLIB YOURLIB ANYLIB".
Замечание:
i5_libl
вызывает qsys2/qcmdexc('cmd',cmdlen), который доступен только в i5/OS V5R4 и новее.
Возвращает ресурс дескриптора подключения, если попытка подключения успешна.
Если попытка подключения потерпела неудачу, db2_connect()
возвращает false
.
Пример #1 Создание каталогизированного соединения
Каталогизированные соединения требуют, чтобы целевая база данных была предварительно каталогизирована с помощью DB2 Command Line Processor (CLP) или DB2 Configuration Assistant.
<?php
$database = 'SAMPLE';
$user = 'db2inst1';
$password = 'ibmdb2';
$conn = db2_connect($database, $user, $password);
if ($conn) {
echo "Connection succeeded.";
db2_close($conn);
}
else {
echo "Connection failed.";
}
?>
Результат выполнения данного примера:
Connection succeeded.
Пример #2 Создание некаталогизированного соединения
Некаталогизированное соединение позволяет динамически подключаться к базе данных.
<?php
$database = 'SAMPLE';
$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 "Connection succeeded.";
db2_close($conn);
}
else {
echo "Connection failed.";
}
?>
Результат выполнения данного примера:
Connection succeeded.
Пример #3 Создание соединения с отключённым автокоммитом по умолчанию
Передача массива параметров в db2_connect() позволяет изменять поведение дескриптора соединения по умолчанию.
<?php
$database = 'SAMPLE';
$user = 'db2inst1';
$password = 'ibmdb2';
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF);
$conn = db2_connect($database, $user, $password, $options);
if ($conn) {
echo "Connection succeeded.\n";
if (db2_autocommit($conn)) {
echo "Autocommit is on.\n";
}
else {
echo "Autocommit is off.\n";
}
db2_close($conn);
}
else {
echo "Connection failed.";
}
?>
Результат выполнения данного примера:
Connection succeeded. Autocommit is off.
Пример #4 Лучшая производительность i5/OS
Для достижения максимальной производительности вашего приложения PHP i5/OS ibm_db2 1.5.1 используйте хост по умолчанию, идентификатор пользователя и пароль для 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);
?>
Результат выполнения данного примера:
ANIMALS NAMES PICTURES
Пример #5 Использование доверенного контекста
В данном примере показано, как включить доверенный контекст, переключить пользователей и получить текущий идентификатор пользователя.
<?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");
// Выполнение работы в качестве пользователя 1
// Переключение на доверенного пользователя
$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");
// Продолжение выполнения работы в качестве доверенного пользователя
if($userBefore != $userAfter) {
echo "User has been switched." . "\n";
}
}
db2_close($tc_conn);
}
else {
echo "Explicit trusted connection failed.\n";
}
?>
Результат выполнения данного примера:
Explicit trusted connection succeeded. User has been switched.