oci_new_connect

(PHP 5, PECL OCI8 >= 1.1.0)

oci_new_connectConnect to the Oracle server using a unique connection

說明

resource oci_new_connect ( string $username , string $password [, string $connection_string [, string $character_set [, int $session_mode ]]] )

Establishes a new connection to an Oracle server and logs on.

Unlike oci_connect() and oci_pconnect(), oci_new_connect() does not cache connections and will always return a brand-new freshly opened connection handle. This is useful if your application needs transactional isolation between two sets of queries.

參數

username

The Oracle user name.

password

The password for username.

connection_string

包含要連接的 Oracle 實例。可以是 » Easy Connect 字串,或是 tnsnames.ora 文件中的連接名,或是本地 Oracle 實體名。

如果不指定,PHP 使用環境變數來確定連接的 Oracle 實例,諸如 TWO_TASK(Linux 下)或 LOCAL(Windows 下)與 ORACLE_SID 等。

要使用 Easy Connect 命名方法,PHP 必須與 Oracle 10g 或更高版本的客戶端函式庫進行連結。Oracle 10g 的 Easy Connect 字串格式:[//]host_name[:port][/service_name]。Oracle 11g 則為:[//]host_name[:port][/service_name][:server_type][/instance_name]。服務名可在資料庫伺服器機器上執行 Oracle 工具程式 lsnrctl status 找到。

tnsnames.ora 檔案可在 Oracle Net 尋找路徑中,此路徑包括 $ORACLE_HOME/network/admin/etc。 另一種方法是設定 TNS_ADMIN 以便通過 $TNS_ADMIN/tnsnames.ora 來讀取。表確認 web 背景程序可讀取此文件。

character_set

使用 Oracle 客戶端函式庫來確定字元集。字元集不需要與資料庫的字符集相匹配。如果不匹配,Oracle 會儘可能地將資料從資料庫字元集進行轉換。因為依賴於字元集,可能不能給出可用的結果。轉換也增加一些時間。

如果不指定,Oracle 客戶端用 NLS_LANG 環境變數來決定字元集。

傳遞此參數可減少連接時間。

session_mode

此參數在 PHP 5(PECL OCI8 1.1)版本開始可用,並接受下列值:OCI_DEFAULTOCI_SYSOPEROCI_SYSDBA。如為 OCI_SYSOPEROCI_SYSDBA 其中之一,此函式將會使用外部的憑證建立有特權的連結。有特權的連結預設是禁用的。需要將 oci8.privileged_connect 設為 On 來啟用。

PHP 5.3(PECL OCI8 1.3.4)引進了 OCI_CRED_EXT 模式值。使用外部或操作系統認證必需在 Oracle 資料庫中進行設定。OCI_CRED_EXT 標誌只可用於用戶為 "/",密碼為空的情況。oci8.privileged_connect 可為 OnOff

OCI_CRED_EXT 可與 OCI_SYSOPEROCI_SYSDBA 模式組合使用。

OCI_CRED_EXT 由於安全的原因不支援 Windows 系統。

回傳值

Returns a connection identifier or FALSE on error.

範例

The following demonstrates how you can separate connections.

Example #1 oci_new_connect() example

<?php

// create table mytab (mycol number);

function query($name$c)
{
    echo 
"Querying $name\n";
    
$s oci_parse($c"select * from mytab");
    
oci_execute($sOCI_NO_AUTO_COMMIT);
    
$row oci_fetch_array($sOCI_ASSOC);
    if (!
$row) {
        echo 
"No rows\n";
    } else {
        do {
            foreach (
$row as $item)
                echo 
$item " ";
            echo 
"\n";
        } while ((
$row oci_fetch_array($sOCI_ASSOC)) != false);
    }
}

$c1 oci_connect("hr""welcome""localhost/orcl");
$c2 oci_new_connect("hr""welcome""localhost/orcl");

$s oci_parse($c1"insert into mytab values(1234)");
oci_execute($sOCI_NO_AUTO_COMMIT);

query("basic connection"$c1);
query("new connection"$c2);
oci_commit($c1);
query("new connection after commit"$c2);

// Output is:
//   Querying basic connection
//   1234 
//   Querying new connection
//   No rows
//   Querying new connection after commit
//   1234 

?>

See oci_connect() for further examples of parameter usage.

參見

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top