ocilogon

(PHP 3>= 3.0.4, PHP 4 , PHP 5)

ocilogon -- 确立一个到 Oracle 的连接

描述

resource ocilogon ( string username, string password [, string db])

ocilogon() 返回一个OCI 调用需要的连接标志符。 可选的第3个参数含有你想要连接的数据库的名字,该名字为本地 Oracle 实列的名字或者在 tnsnames.ora 的条目中的名字。 如果第3个参数没有定义, PHP 使用环境变量 ORACLE_SID (Oracle 实列) 或 TWO_TASK (tnsnames.ora) 来确定连接哪一个数据库。

当使用 ocilogon() 的时候, 连接在页水平上被共享。 这意味着提交和回滚应用到该页所有开放的事务,甚至在你已经创建 多个连接的情况下。

这个例子演示连接是怎样被共享的。

例子 1. ocilogon()

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

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

function
create_table($conn)
{
  
$stmt = ociparse($conn, "create table scott.hallo (test varchar2(64))");
  
ociexecute($stmt);
  echo
$conn . " created table\n\n";
}

function
drop_table($conn)
{
  
$stmt = ociparse($conn, "drop table scott.hallo");
  
ociexecute($stmt);
  echo
$conn . " dropped table\n\n";
}

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

function
delete_data($conn)
{
  
$stmt = ociparse($conn, "delete from scott.hallo");
  
ociexecute($stmt, OCI_DEFAULT);
  echo
$conn . " deleted hallo\n\n";
}

function
commit($conn)
{
  
ocicommit($conn);
  echo
$conn . " committed\n\n";
}

function
rollback($conn)
{
  
ocirollback($conn);
  echo
$conn . " rollback\n\n";
}

function
select_data($conn)
{
  
$stmt = ociparse($conn, "select * from scott.hallo");
  
ociexecute($stmt, OCI_DEFAULT);
  echo
$conn."----selecting\n\n";
  while (
ocifetch($stmt)) {
    echo
$conn . " [" . ociresult($stmt, "TEST") . "]\n\n";
  }
  echo
$conn . "----done\n\n";
}

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

参见 ociplogon()ocinlogon()