PHP8 db2_connect

2024-04-06 18:04 更新

(PECL ibm_db2 >= 1.0.0)

db2_connect — 返回與數(shù)據(jù)庫的連接

說明

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

創(chuàng)建與 IBM DB2 通用數(shù)據(jù)庫、IBM Cloudscape 和IBM DB2 Universal Database(IBM Cloudscape)的新連接。 或 Apache Derby 數(shù)據(jù)庫。

參數(shù) 

database

對于與數(shù)據(jù)庫的編目連接,表示 DB2 客戶機目錄中的數(shù)據(jù)庫別名。database

對于與數(shù)據(jù)庫的未編目連接,表示完整連接 字符串格式如下:database

DATABASE=database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password;
其中參數(shù)表示以下值:
database

數(shù)據(jù)庫的名稱。

hostname

數(shù)據(jù)庫服務(wù)器的主機名或 IP 地址。

port

數(shù)據(jù)庫偵聽的 TCP/IP 端口 請求。

username

您用于連接到 數(shù)據(jù)庫。

password

用于連接到數(shù)據(jù)庫的密碼。

username

用于連接到數(shù)據(jù)庫的用戶名。

對于未編目的連接,必須傳遞 null 值或空值 字符串。

password

用于連接到數(shù)據(jù)庫的密碼。

對于未編目的連接,必須傳遞 null 值或空值 字符串。

options

影響行為的關(guān)聯(lián)連接選項數(shù)組 ,其中有效的數(shù)組鍵包括:

autocommit

傳遞值轉(zhuǎn)彎 為此連接句柄打開自動提交。DB2_AUTOCOMMIT_ON

傳遞值轉(zhuǎn)彎 此連接句柄的自動提交關(guān)閉。DB2_AUTOCOMMIT_OFF

DB2_ATTR_CASE

傳遞該值指定 該列名以自然大小寫返回。DB2_CASE_NATURAL

傳遞該值指定 該列名以小寫形式返回。DB2_CASE_LOWER

傳遞該值指定 該列名稱以大寫形式返回。DB2_CASE_UPPER

CURSOR

傳遞該值指定 語句資源的只進游標。這是默認設(shè)置 游標類型,并且在所有數(shù)據(jù)庫服務(wù)器上都受支持。DB2_FORWARD_ONLY

傳遞該值指定 語句資源的可滾動游標。此模式啟用 隨機訪問結(jié)果集中的行,但目前支持 僅由 IBM DB2 通用數(shù)據(jù)庫提供。DB2_SCROLLABLE

以下新選項在 ibm_db2 版本 1.7.0 及更高版本中可用。

trustedcontext

傳遞DB2_TRUSTED_CONTEXT_ENABLE值可轉(zhuǎn)換為受信任的上下文 對于此連接句柄,請打開。不能使用 db2_set_option() 設(shè)置此參數(shù)。

僅當數(shù)據(jù)庫已編目時,此鍵才有效(即使 database is local),或者在創(chuàng)建時指定完整的 DSN 連接。

若要對數(shù)據(jù)庫進行編目,請使用以下命令:

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

ibm_db2版本 1.5.1 中提供了以下新的 i5/OS 選項 和以后。

i5_lib

一個字符值,該值指示將 用于解析不合格的文件引用。這是無效的 如果連接使用系統(tǒng)命名模式。

i5_naming

DB2_I5_NAMING_ONvalue 打開 DB2 UDB CLI iSeries 系統(tǒng)命名模式。使用斜杠 (/) 分隔符限定文件。 使用作業(yè)的庫列表解析不合格的文件。

DB2_I5_NAMING_OFFvalue 關(guān)閉 DB2 UDB CLI 缺省值 命名模式,即 SQL 命名。使用句點 (.) 限定文件 定界符。使用默認庫解析不合格的文件 或當前用戶 ID。

i5_commit

該屬性應(yīng)設(shè)置在 db2_connect() 之前。如果在 連接已建立,并且連接是遠程數(shù)據(jù) source,則更改在連接句柄的下一個成功 db2_connect() 之前不會生效。i5_commit

注意

php.ini設(shè)置 ==0 或者是默認值,但可能是 被選項覆蓋。ibm_db2.i5_allow_commitDB2_I5_TXN_NO_COMMITi5_commit

DB2_I5_TXN_NO_COMMIT- 不使用承諾控制。

DB2_I5_TXN_READ_UNCOMMITTED- 臟讀,不可重復(fù) 讀取,幻影是可能的。

DB2_I5_TXN_READ_COMMITTED- 無法進行臟讀。 不可重復(fù)的讀取和幻像是可能的。

DB2_I5_TXN_REPEATABLE_READ- 臟讀和不可重復(fù) 無法讀取?;糜笆强赡艿摹?/p>

DB2_I5_TXN_SERIALIZABLE- 事務(wù)是可序列化的。 無法進行臟讀取、不可重復(fù)讀取和幻像

i5_query_optimize

DB2_FIRST_IO所有查詢都經(jīng)過優(yōu)化,目標是 盡快返回輸出的第一頁。這個目標效果很好 當輸出由最有可能取消查詢的用戶控制時 查看輸出數(shù)據(jù)的第一頁后。使用 OPTIMIZE FOR nnn ROWS 子句遵循子句指定的目標。

DB2_ALL_IO所有查詢都經(jīng)過優(yōu)化,目標是運行 在最短的時間內(nèi)完成整個查詢。這是一個 當查詢的輸出被寫入文件或報表時,這是一個很好的選項,或者 接口正在對輸出數(shù)據(jù)進行排隊。使用 OPTIMIZE FOR nnn 編碼的查詢 ROWS 子句遵循子句指定的目標。這是默認設(shè)置。

i5_dbcs_alloc

DB2_I5_DBCS_ALLOC_ONvalue 打開 DB2 6X 分配方案 用于 DBCS 轉(zhuǎn)換列大小的增長。

DB2_I5_DBCS_ALLOC_OFFvalue 關(guān)閉 DB2 6X 分配方案 用于 DBCS 轉(zhuǎn)換列大小的增長。

注意:php.ini設(shè)置 ==0 或為默認值,但可能會被覆蓋 替換為選項。ibm_db2.i5_dbcs_allocDB2_I5_DBCS_ALLOC_OFFi5_dbcs_alloc

i5_date_fmt

DB2_I5_FMT_ISO- 國際標準化組織 使用 (ISO) 日期格式 yyyy-mm-dd。這是默認設(shè)置。

DB2_I5_FMT_USA- 使用美國日期格式 mm/dd/yyyy。

DB2_I5_FMT_EUR- 使用歐洲日期格式 dd.mm.yyyy。

DB2_I5_FMT_JIS- 日本工業(yè)標準日期格式 使用 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- 使用作業(yè)默認值。

i5_date_sep

DB2_I5_SEP_SLASH- 斜杠 ( / ) 用作日期分隔符。 這是默認設(shè)置。

DB2_I5_SEP_DASH- 短劃線 ( - ) 用作日期分隔符。

DB2_I5_SEP_PERIOD- 句點 ( . ) 用作日期 分隔符。

DB2_I5_SEP_COMMA- 逗號 ( , ) 用作日期分隔符。

DB2_I5_SEP_BLANK- 空白用作日期分隔符。

DB2_I5_SEP_JOB- 使用作業(yè)默認值

i5_time_fmt

DB2_I5_FMT_ISO- 國際組織 使用標準化 (ISO) 時間格式 hh.mm.ss。這是默認設(shè)置。

DB2_I5_FMT_USA- 美國時間格式 使用 hh:mmxx,其中 xx 是 AM 或 PM。

DB2_I5_FMT_EUR- 歐洲時間格式 hh.mm.ss 被使用。

DB2_I5_FMT_JIS- 日本工業(yè)標準 使用時間格式 HH:MM:SS。

DB2_I5_FMT_HMS- 使用 hh:mm:ss 格式。

i5_time_sep

DB2_I5_SEP_COLON- 冒號 ( : ) 用作時間 分隔符。這是默認設(shè)置。

DB2_I5_SEP_PERIOD- 句點 ( . ) 用作時間 分隔符。

DB2_I5_SEP_COMMA- 使用逗號 ( , ) 作為時間 分隔符。

DB2_I5_SEP_BLANK- 空白用作時間分隔符。

DB2_I5_SEP_JOB- 使用作業(yè)默認值。

i5_decimal_sep

DB2_I5_SEP_PERIOD- 句點 ( . ) 用作 小數(shù)點分隔符。這是默認設(shè)置。

DB2_I5_SEP_COMMA- 逗號 ( , ) 用作 小數(shù)分隔符。

DB2_I5_SEP_JOB- 使用作業(yè)默認值。

以下新的 i5/OS 選項在 ibm_db2 版本 1.8.0 中可用 和以后。

i5_libl

一個字符值,該值指示將用于 解析不合格的文件引用。指定庫列表 用空格分隔的元素 'i5_libl'=>“MYLIB YOURLIB ANYLIB”。

注意

i5_libl調(diào)用 qsys2/qcmdexc('cmd',cmdlen),它只 在 i5/OS V5R4 及更高版本中可用。

返回值 

如果連接嘗試為 成功的。如果連接嘗試失敗,db2_connect() 將返回 false。

示例 

示例 #1 創(chuàng)建編目連接

編目連接要求您之前已對目標進行編目 通過 DB2 命令行處理器 (CLP) 或 DB2 的數(shù)據(jù)庫 配置助手。

<?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 創(chuàng)建未編目的連接

未編目的連接使您能夠動態(tài)連接到 數(shù)據(jù)庫。

<?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 默認關(guān)閉自動提交創(chuàng)建連接

將選項數(shù)組傳遞給 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 最佳性能

為您的 i5/OS ibm_db2 1.5.1 PHP 應(yīng)用程序?qū)崿F(xiàn)最佳性能 使用 db2_connect() 的默認主機、用戶 ID 和密碼。

<?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 使用可信上下文

以下示例演示如何啟用受信任的上下文、開關(guān) users,并獲取當前用戶 ID。

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

以上示例會輸出:

Explicit trusted connection succeeded.
User has been switched.

參見 

  • db2_close() - 關(guān)閉數(shù)據(jù)庫連接
  • db2_pconnect() - 返回與數(shù)據(jù)庫的持久連接


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號