PHP.mk документација

db2_connect

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.db2-connect.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.db2-connect.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
db2_connect

Референца за `function.db2-connect.php` со подобрена типографија и навигација.

function.db2-connect.php

db2_connect

("PECL ibm_db2" >= 1.0.0)

db2_connect Враќа врска до база на податоци

= NULL

db2_connect(
         string $database,
         ?string $username,
         ?string $password,
         array $options = []
): resource|false

Креира нова врска до база на податоци IBM DB2 Universal Database, IBM Cloudscape или Apache Derby.

Параметри

database
За каталогизирана врска до база на податоци, database ја претставува алијасот на базата на податоци во каталогот на клиентот DB2.

За некатализирана врска до база на податоци, database ја претставува целосната низа за поврзување во следниот формат:

DATABASE=database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password;

Забелешка:

При поврзување со Db2 на IBM i, основните системски повици » SQLDriverConnect, кој прифаќа само DSN, UID и PWD за » низа за поврзување. Вака:

DSN=database;UID=username;PWD=password;
каде што параметрите ги претставуваат следните вредности:
database
Името на базата на податоци.
hostname
Име на хост или IP адреса на серверот на базата на податоци.
port
TCP/IP портата на која базата на податоци слуша за барања.
username
Корисничкото име со кое се поврзувате на базата на податоци.
password
Лозинката со која се поврзувате на базата на податоци.
username
Корисничкото име со кое се поврзувате на базата на податоци. За некатализирани врски, мора да поминете null вредност или празна низа.
password
Лозинката со која се поврзувате на базата на податоци. За некатализирани врски, мора да поминете null вредност или празна низа.
options

Асоцијативен список на опции за поврзување што влијаат на однесувањето на врската, каде што валидните клучеви на списокот вклучуваат:

autocommit
Поминување на DB2_AUTOCOMMIT_ON вредноста го вклучува авто-commit за оваа врска. Поминување на DB2_AUTOCOMMIT_OFF вредноста го вклучува авто-комитирањето за оваа конекција.
DB2_ATTR_CASE
Поминување на DB2_CASE_NATURAL вредноста го исклучува авто-комитирањето за оваа конекција. Поминување на DB2_CASE_LOWER вредноста специфицира дека имињата на колоните се враќаат во природна големина. Поминување на DB2_CASE_UPPER вредноста специфицира дека имињата на колоните се враќаат со мали букви.
CURSOR
Поминување на DB2_FORWARD_ONLY вредноста специфицира дека имињата на колоните се враќаат со големи букви. Поминување на DB2_SCROLLABLE вредноста специфицира курсор само за напред за ресурс на изјава. Овој тип на курсор е стандарден и поддржан на сите серверски бази на податоци.

вредноста специфицира курсор што може да се скрола за ресурс на изјава. Овој режим овозможува случаен пристап до редовите во сет на резултати, но моментално е поддржан само од IBM DB2 Universal Database.

trustedcontext
Следната нова опција е достапна во верзијата ibm_db2 1.7.0 и понова. db2_set_option(). Поминувањето на вредноста DB2_TRUSTED_CONTEXT_ENABLE го вклучува доверливиот контекст за оваа конекција. Овој параметар не може да се постави со користење на Овој клуч работи само ако базата на податоци е каталогизирана (дури и ако базата на податоци е локална), или ако го специфицирате целосниот 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_lib
Следните нови опции за i5/OS се достапни во верзијата ibm_db2 1.5.1 и понова.
i5_naming
DB2_I5_NAMING_ON Вредност од тип карактер што укажува на стандардната библиотека што ќе се користи за решавање на неквалификувани референци на датотеки. Ова не е валидно ако врската користи режим на именување на системот. DB2_I5_NAMING_OFF вредноста го вклучува режимот на именување на системот DB2 UDB CLI iSeries. Датотеките се квалификуваат со користење на разделувачот коса црта (/). Неквалификуваните датотеки се решаваат со користење на списокот на библиотеки за задачата.
i5_commit

На i5_commit вредноста го исклучува стандардниот режим на именување DB2 UDB CLI, кој е SQL именување. Датотеките се квалификуваат со користење на разделувачот точка (.). Неквалификуваните датотеки се решаваат со користење на стандардната библиотека или тековниот кориснички ID. db2_connect()атрибутот треба да се постави пред db2_connect() . Ако вредноста се промени откако е воспоставена врската, и врската е со оддалечен извор на податоци, промената нема да стапи на сила до следната успешна

Забелешка: за рачката на конекцијата. ibm_db2.i5_allow_commitПоставката во php.ini DB2_I5_TXN_NO_COMMIT е стандардно, но може да биде надминато со i5_commit option.

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Поставката во php.ini DB2_I5_DBCS_ALLOC_OFF е стандардно, но може да биде надминато со i5_dbcs_alloc option.
i5_date_fmt
DB2_I5_FMT_ISO - Меѓународната организација за стандардизација (ISO) формат на датум г-гггг-мм-дд се користи. Ова е стандардно. DB2_I5_FMT_USA - Форматот на датум на САД мм/дд/гггг се користи. DB2_I5_FMT_EUR - Европскиот формат на датум дд.мм.гггг се користи. DB2_I5_FMT_JIS - Јапонскиот индустриски стандарден формат на датум г-гггг-мм-дд се користи. DB2_I5_FMT_MDY - Форматот на датум мм/дд/гггг се користи. DB2_I5_FMT_DMY - Форматот на датум дд/мм/гггг се користи. DB2_I5_FMT_YMD - Форматот на датум гг/мм/дд се користи. DB2_I5_FMT_JUL - Јулијанскиот формат на датум гг/ддд се користи. 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 Стандардното за работа се користи DB2_I5_FMT_USA - Меѓународната организација за стандардизација (ISO) формат на време hh.mm.ss се користи. Ова е стандардно. DB2_I5_FMT_EUR - Форматот на време hh:mmxx во САД се користи, каде што xx е AM или PM. DB2_I5_FMT_JIS - Европскиот формат на време hh.mm.ss се користи. DB2_I5_FMT_HMS - Јапонскиот индустриски стандарден формат на време hh:mm:ss се користи.
i5_time_sep
DB2_I5_SEP_COLON - Форматот hh:mm:ss се користи. 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_libl
Следната нова опција i5/OS е достапна во верзијата ibm_db2 1.8.0 и понова.

Забелешка: i5_libl Вредност на карактер што го означува списокот на библиотеки што ќе се користи за решавање на неквалификувани референци на датотеки. Наведете ги елементите на списокот на библиотеки разделени со празни места 'i5_libl'=>"MYLIB YOURLIB ANYLIB".

Вратени вредности

Враќа ресурс за рачка за поврзување ако обидот за поврзување е успешен. Ако обидот за поврзување не успее, db2_connect() returns false.

Примери

Враќа ресурс за рачка за поврзување ако обидот за поврзување е успешен. Ако обидот за поврзување не успее,

Пример #1 Создавање каталогизирана врска

<?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.";
}
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Connection succeeded.

Каталогизираните врски бараат претходно да сте го каталогизирале целниот податочен базен преку DB2 Command Line Processor (CLP) или DB2 Configuration Assistant.

Пример #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.";
}
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

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.";
}
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Connection succeeded.
Autocommit is off.

ви овозможува да го промените стандардното однесување на рачката за поврзување.

Пример #4 i5/OS најдобра изведба 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);
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

ANIMALS
NAMES
PICTURES

За да постигнете најдобра изведба за вашата i5/OS ibm_db2 1.5.1 PHP апликација, користете го стандардниот хост, корисничко име и лозинка за вашиот

Пример #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");

//Do some work as user 1.

//Switching to trusted user.
$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");
//Do more work as trusted user.

if($userBefore != $userAfter) {
echo
"User has been switched." . "\n";
}
}

db2_close($tc_conn);
}
else {
echo
"Explicit trusted connection failed.\n";
}
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Explicit trusted connection succeeded.
User has been switched.

Види Исто така

  • db2_close() - Затвора врска со база на податоци
  • db2_pconnect() - Враќа постојана врска со база на податоци

Белешки од корисници 1 белешка

Следниот пример покажува како да се овозможи доверлив контекст, да се префрлат корисници и да се добие тековното корисничко име.
пред 10 години
As of 09/29/2015 when using the ibm_db2 driver and specifying an invalid library list with the 'i5_libl' option, the connection will be successfully created but with a default library list.  What happens is the connection is made and THEN the library list is attempted to be changed.  The connection will be a success but the library list change will fail without "db2_conn_error()" or "db2_conn_errormsg()" reporting anything and a default library list will be used.  However, "db2_stmt_error()" and "db2_stmt_errormsg()" will register with a value.  Also if error reporting is enable, the warning will be output to the screen.  This is not a bug, rather intended behavior according to Zend (I opened a ticked) and depending on which library list is used/swapped could lead to major problems (development VS production).  I stumbled upon this behavior when an anomaly (which I still can't explain) was imploding my library list with the character 'Z'.  I realized I was in my development environment but accessing production data as a result.  Going forward I will make sure to add this additional check for good measure.

See below to recreate behavior:

<?php
ini_set("display_errors", 1);

$systemName = 'systemName';
$userID = 'userName';
$password = 'password';

$options['i5_libl'] = implode('Z', array(
        'INVALID',        
    'LIB',       
    'LIST',   
    'IMPLODED',  
    'WITH',   
    'THE',      
    'LETTER',       
    'Z'
    ));

$options['i5_naming'] = DB2_I5_NAMING_ON;

$conn = db2_connect($systemName, $userID, $password, $options);
//This line causes "ini_set("display_errors", 1)" to dislay this warning on the screen:
//Warning: db2_connect(): Statement Execute Failed in /PATH/TO/FILE/test.php on line 58

if (db2_stmt_error()) { //Evaluates to true
    echo "error ID: " . (db2_stmt_error()); //Displays error code: 38501
    echo "<br>error message: " . (db2_stmt_errormsg()); //Displays: Trigger program or external routine detected an error. SQLCODE=-443
}

echo "<br />|".db2_conn_error()." ||| ".db2_conn_errormsg()."|<br />"; //Only "| ||| |" is displayed
print_r($conn); //A resource ID is displayed
echo "<br />";

if(isset($conn) && $conn === true){
    echo "Boolean true<br />";
    //never executes, but not expected since either false or a resource ID should be returned.
    //Plus it is clear $conn contains a resource ID from above.
}
if(isset($conn) && $conn == true){
    echo "Non-Boolean true 2<br />"; 
    //This always executes regardless of an accurate library list or not
    //I suppose "if($conn)" would evaluate to non-boolean true so this makes sense.
}
if(isset($conn) && $conn == "true"){
    echo "String true";
    //Never executes, but not expected.
}
if(isset($conn) && $conn === false){
    echo "Boolean false<br />";
    //never executes because the connection itself was a success.
    //If invalid credentials were provided this executes.
}
if(isset($conn) && $conn == false){
    echo "Non-Boolean false 2<br />";
    //never executes because the connection itself was a success.
    //Added this here because I was unsure if a boolean false would be returned or not.
    //If invalid credentials were provided this executes as well.
}
if(isset($conn) && $conn == "false"){
    echo "String false";
    //never executes because the connection itself was a success.
    //Added this here because I was unsure if a String "false" would be returned
}
?>
Навигација

Прелистувај сродни теми и функции.

На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.