成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導(dǎo)航首頁(yè) ? 技術(shù)教程 ? PHP:oci_connect()的用法_Oracle函數(shù)
全站頭部文字 我要出現(xiàn)在這里
PHP:oci_connect()的用法_Oracle函數(shù) 691 2023-12-12   

oci_connect

(PHP 5, PECL OCI8 >= 1.1.0)

oci_connect — 建立一個(gè)到 Oracle 服務(wù)器的連接

說(shuō)明

resource oci_connect ( string $username , string $password [, string $db [, string $charset [, int $session_mode ]]] )

oci_connect() 返回一個(gè)大多數(shù) OCI 調(diào)用都需要的連接標(biāo)識(shí)符。可選的第三個(gè)參數(shù)可以包含想要連接的本地 Oracle 的實(shí)例的或者在 tnsnames.ora 中的條目的名字。如果沒(méi)有指定可選的第三個(gè)參數(shù),PHP 使用環(huán)境變量 ORACLE_SID(Oracle 實(shí)例)或 TWO_TASK(tnsnames.ora)來(lái)確定連接哪一個(gè)數(shù)據(jù)庫(kù)。

session_mode 參數(shù)自版本 1.1 起可用并接受如下值:OCI_DEFAULTOCI_SYSOPEROCI_SYSDBA。如果指定了 OCI_SYSOPEROCI_SYSDBA 其中之一,oci_connect() 將嘗試使用外部認(rèn)證信息建立特權(quán)連接。特權(quán)連接默認(rèn)被禁止。要啟用,需要將 oci8.privileged_connect 設(shè)為 On。

Note: 對(duì) oci_connect() 用同樣的參數(shù)第二次及之后的調(diào)用將返回第一次調(diào)用所返回的連接句柄。也就是說(shuō)對(duì)一個(gè)句柄發(fā)出的查詢也適用于另一個(gè)句柄,因?yàn)樗鼈兪峭粋€(gè)句柄。此行為演示于下面的例 1。如果需要兩個(gè)句柄在事務(wù)上互相隔離開(kāi),應(yīng)該使用 oci_new_connect() 來(lái)替代。

使用 Oracle 客戶端庫(kù)來(lái)確定字符集。字符集不需要與數(shù)據(jù)庫(kù)的字符集相匹配。如果不匹配,Oracle 會(huì)盡可能地將數(shù)據(jù)從數(shù)據(jù)庫(kù)字符集進(jìn)行轉(zhuǎn)換。因?yàn)橐蕾囉谧址赡懿荒芙o出可用的結(jié)果。轉(zhuǎn)換也增加一些時(shí)間開(kāi)銷。

如果不指定,Oracle 客戶端用 NLS_LANG 環(huán)境變量來(lái)決定字符集。

傳遞此參數(shù)可減少連接時(shí)間。

Example #1 oci_connect() 例子

<?php
echo "<pre>";
$db = "";

$c1 = oci_connect("scott", "tiger", $db);
$c2 = oci_connect("scott", "tiger", $db);

function create_table($conn)
{
  $stmt = oci_parse($conn, "create table scott.hallo (test varchar2(64))");
  oci_execute($stmt);
  echo $conn . " created tablenn";
}

function drop_table($conn)
{
  $stmt = oci_parse($conn, "drop table scott.hallo");
  oci_execute($stmt);
  echo $conn . " dropped tablenn";
}

function insert_data($conn)
{
  $stmt = oci_parse($conn, "insert into scott.hallo
            values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
  oci_execute($stmt, OCI_DEFAULT);
  echo $conn . " inserted hallonn";
}

function delete_data($conn)
{
  $stmt = oci_parse($conn, "delete from scott.hallo");
  oci_execute($stmt, OCI_DEFAULT);
  echo $conn . " deleted hallonn";
}

function commit($conn)
{
  oci_commit($conn);
  echo $conn . " committednn";
}

function rollback($conn)
{
  oci_rollback($conn);
  echo $conn . " rollbacknn";
}

function select_data($conn)
{
  $stmt = oci_parse($conn, "select * from scott.hallo");
  oci_execute($stmt, OCI_DEFAULT);
  echo $conn."----selectingnn";
  while (oci_fetch($stmt)) {
    echo $conn . " [" . oci_result($stmt, "TEST") . "]nn";
  }
  echo $conn . "----donenn";
}

create_table($c1);
insert_data($c1);   // Insert a row using c1
insert_data($c2);   // Insert a row using c2

select_data($c1);   // Results of both inserts are returned
select_data($c2);

rollback($c1);      // Rollback using c1

select_data($c1);   // Both inserts have been rolled back
select_data($c2);

insert_data($c2);   // Insert a row using c2
commit($c2);        // Commit using c2

select_data($c1);   // Result of c2 insert is returned

delete_data($c1);   // Delete all rows in table using c1
select_data($c1);   // No rows returned
select_data($c2);   // No rows returned
commit($c1);        // Commit using c1

select_data($c1);   // No rows returned
select_data($c2);   // No rows returned

drop_table($c1);
echo "</pre>";
?>

oci_connect() 如果出錯(cuò)則返回 FALSE

Note:

在 PHP 5.0.0 之前的版本必須使用 ocilogon() 替代本函數(shù)。該函數(shù)名仍然可用,為向下兼容作為 oci_connect() 的別名。不過(guò)其已被廢棄,不推薦使用。

參見(jiàn) oci_pconnect(),oci_new_connect() 和 oci_close()。

參數(shù)

username

The Oracle user name.

password

The password for username.

connection_string

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

如果不指定,PHP 使用環(huán)境變量來(lái)確定連接的 Oracle 實(shí)例,諸如 TWO_TASK(Linux 下)或 LOCAL(Windows 下)與 ORACLE_SID 等。

要使用 Easy Connect 命名方法,PHP 必須與 Oracle 10g 或更高版本的客戶端庫(kù)進(jìn)行鏈接。Oracle 10g 的 Easy Connect 串格式:[//]host_name[:port][/service_name]。Oracle 11g 則為:[//]host_name[:port][/service_name][:server_type][/instance_name]。服務(wù)名可在數(shù)據(jù)庫(kù)服務(wù)器機(jī)器上運(yùn)行 Oracle 實(shí)用程序 lsnrctl status 找到。

tnsnames.ora 文件可在 Oracle Net 查找路徑中,此路徑包括 $ORACLE_HOME/network/admin 和 /etc。 另一種方法是設(shè)置 TNS_ADMIN 以便通過(guò) $TNS_ADMIN/tnsnames.ora 來(lái)讀取。表確認(rèn) web 守護(hù)進(jìn)程可讀取此文件。

character_set

使用 Oracle 客戶端庫(kù)來(lái)確定字符集。字符集不需要與數(shù)據(jù)庫(kù)的字符集相匹配。如果不匹配,Oracle 會(huì)盡可能地將數(shù)據(jù)從數(shù)據(jù)庫(kù)字符集進(jìn)行轉(zhuǎn)換。因?yàn)橐蕾囉谧址赡懿荒芙o出可用的結(jié)果。轉(zhuǎn)換也增加一些時(shí)間開(kāi)銷。

如果不指定,Oracle 客戶端用 NLS_LANG 環(huán)境變量來(lái)決定字符集。

傳遞此參數(shù)可減少連接時(shí)間。

session_mode

此參數(shù)在 PHP 5(PECL OCI8 1.1)版本開(kāi)始可用,并收受下列值:OCI_DEFAULTOCI_SYSOPEROCI_SYSDBA。如為 OCI_SYSOPEROCI_SYSDBA 其中之一,此函數(shù)將會(huì)使用外部的證書(shū)建立有特權(quán)的連接。有特權(quán)的連接默認(rèn)是禁用的。需要將 oci8.privileged_connect 設(shè)為 On 來(lái)啟用。

PHP 5.3(PECL OCI8 1.3.4)引進(jìn)了 OCI_CRED_EXT 模式值。使用外部或操作系統(tǒng)認(rèn)證必需在 Oracle 數(shù)據(jù)庫(kù)中進(jìn)行配置。OCI_CRED_EXT 標(biāo)志只可用于用戶為 "/",密碼為空的情況。oci8.privileged_connect 可為 On 或 Off。

OCI_CRED_EXT 可與 OCI_SYSOPEROCI_SYSDBA 模式組合使用。

OCI_CRED_EXT 由于安全的原因不支持 Windows 系統(tǒng)。

返回值

Returns a connection identifier or FALSE on error.

范例

Example #2 Basic oci_connect() using Easy Connect syntax

<?php

// Connects to the XE service (i.e. database) on the "localhost" machine
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT * FROM employees');
oci_execute($stid);

echo "<table border='1'>n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    echo "<tr>n";
    foreach ($row as $item) {
        echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>n";
    }
    echo "</tr>n";
}
echo "</table>n";

?>

Example #3 Basic oci_connect() using a Network Connect name

<?php

// Connects to the MYDB database described in tnsnames.ora file,
// One example tnsnames.ora entry for MYDB could be:
//   MYDB =
//     (DESCRIPTION =
//       (ADDRESS = (PROTOCOL = TCP)(HOST = mymachine.oracle.com)(PORT = 1521))
//       (CONNECT_DATA =
//         (SERVER = DEDICATED)
//         (SERVICE_NAME = XE)
//       )
//     )

$conn = oci_connect('hr', 'welcome', 'MYDB');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT * FROM employees');
oci_execute($stid);

echo "<table border='1'>n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    echo "<tr>n";
    foreach ($row as $item) {
        echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>n";
    }
    echo "</tr>n";
}
echo "</table>n";

?>

Example #4 oci_connect() with an explicit character set

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE', 'AL32UTF8');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT * FROM employees');
oci_execute($stid);

echo "<table border='1'>n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    echo "<tr>n";
    foreach ($row as $item) {
        echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>n";
    }
    echo "</tr>n";
}
echo "</table>n";

?>

Example #5 Using multiple calls to oci_connect()

<?php

$c1 = oci_connect("hr", "welcome", 'localhost/XE');
$c2 = oci_connect("hr", "welcome", 'localhost/XE');

// Both $c1 and $c2 show the same PHP resource id meaning they use the
// same underlying database connection
echo "c1 is $c1<br>n";
echo "c2 is $c2<br>n";

function create_table($conn)
{
    $stmt = oci_parse($conn, "create table hallo (test varchar2(64))");
    oci_execute($stmt);
    echo "Created table<br>n";
}

function drop_table($conn)
{
    $stmt = oci_parse($conn, "drop table hallo");
    oci_execute($stmt);
    echo "Dropped table<br>n";
}

function insert_data($connname, $conn)
{
    $stmt = oci_parse($conn, "insert into hallo
              values(to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
    oci_execute($stmt, OCI_DEFAULT);
    echo "$connname inserted row without committing<br>n";
}

function rollback($connname, $conn)
{
    oci_rollback($conn);
    echo "$connname rollback<br>n";
}

function select_data($connname, $conn)
{
    $stmt = oci_parse($conn, "select * from hallo");
    oci_execute($stmt, OCI_DEFAULT);
    echo "$connname ----selecting<br>n";
    while (oci_fetch($stmt)) {
        echo "    " . oci_result($stmt, "TEST") . "<br>n";
    }
    echo "$connname ----done<br>n";
}

create_table($c1);

insert_data('c1', $c1);   // Insert a row using c1
sleep(2);                 // sleep to show a different timestamp for the 2nd row
insert_data('c2', $c2);   // Insert a row using c2

select_data('c1', $c1);   // Results of both inserts are returned
select_data('c2', $c2);   // Results of both inserts are returned

rollback('c1', $c1);      // Rollback using c1

select_data('c1', $c1);   // Both inserts have been rolled back
select_data('c2', $c2);

drop_table($c1);

// Closing one of the connections makes the PHP variable unusable, but
// the other could be used
oci_close($c1);
echo "c1 is $c1<br>n";
echo "c2 is $c2<br>n";


// Output is:
//    c1 is Resource id #5
//    c2 is Resource id #5
//    Created table
//    c1 inserted row without committing
//    c2 inserted row without committing
//    c1 ----selecting
//        09-DEC-09 12:14:43
//        09-DEC-09 12:14:45
//    c1 ----done
//    c2 ----selecting
//        09-DEC-09 12:14:43
//        09-DEC-09 12:14:45
//    c2 ----done
//    c1 rollback
//    c1 ----selecting
//    c1 ----done
//    c2 ----selecting
//    c2 ----done
//    Dropped table
//    c1 is 
//    c2 is Resource id #5

?>

注釋

Note:

An incorrectly installed or configured OCI8 extension will often manifest itself as a connection problem or error. See Installing/Configuring for troubleshooting information.

Note:

In PHP versions before 5.0.0 use ocilogon() instead. 在當(dāng)前版本中,舊的函數(shù)名還可以被使用,但已經(jīng)被廢棄并不建議使用。

參見(jiàn)

oci_pconnect() - 使用一個(gè)持久連接連到 Oracle 數(shù)據(jù)庫(kù) oci_new_connect() - 建定一個(gè)到 Oracle 服務(wù)器的新連接 oci_close() - 關(guān)閉 Oracle 連接


主站蜘蛛池模板: 我不知道明天的道路歌词歌谱| 内蒙古电视台节目表| 杨镇宁| 珍爱如血泰剧全集在线观看| 电商运营计划| jeanette| 孕检时间表和项目| 变形金刚2演员表| 电视剧暗夜与黎明剧情介绍| 太医派的开胃汤配方| 亚洲 在线| 音乐僵尸| 佳偶天成泰剧| someonelikeyou歌词中文翻译| 女生衣服| 野兽罪人电影免费观看| 爱,藏起来 电影| 打开双腿扒开打屁股羞辱惩罚视频| 诱惑的艺术| 金针菇尽量少吃最好不吃什么| 漂亮的女邻居5伦理| 第一财经现场直播| 狂魔电影| 和平精英捏脸码| 樱井步| 危险诱惑| 手游传奇排行榜第一名| 郑志昊| 我的学生妈妈| 免费播放电影大全免费观看| 三年片电影| 小班健康活动教案40篇| 美女网站视频免费| 超级大富豪| 最佳嫌疑人电影免费观看| 性的视频| 绿门背后| 华师大图书馆| 热情电影| 雪天使演员表介绍| 黄浩雯主演过的所有短剧|

!!!站長(zhǎng)長(zhǎng)期在線接!!!

網(wǎng)站、小程序:定制開(kāi)發(fā)/二次開(kāi)發(fā)/仿制開(kāi)發(fā)等

各種疑難雜癥解決/定制接口/定制采集等

站長(zhǎng)微信:lxwl520520

站長(zhǎng)QQ:1737366103