ocinlogon
(PHP 3>= 3.0.8, PHP 4 , PHP 5)
ocinlogon -- 确定一个到 Oracle 的新连接
描述
resource
ocinlogon ( string username, string password [, string db])
ocinlogon() 创建一个到Oracle 8 数据库的新连接。
可选的第3个参数含有你想要连接的数据库的名字,该名字为本地 Oracle
实列的名字或者在 tnsnames.ora 的条目中的名字。
如果第3个参数没有定义, PHP 使用环境变量 ORACLE_SID (Oracle 实列)
或 TWO_TASK (tnsnames.ora) 来确定连接哪一个数据库。
ocinlogon() 强迫打开一个新的连接。
如果你需要隔离一系列事务时,该函数将被用到。
在默认的情况下,如果使用 ocilogon(),连接将
在页水平被共享;如果使用 ociplogon(),连接将
被在 web 服务器进程水平被共享。如果你有使用 ocinlogon()
打开的连接,所有的提交和回滚仅仅应用到特定的连接。
下面的例子演示连接是怎样被隔离的。
例子 1. ocinlogon()
<?php echo "<html><pre>"; $db = "";
$c1 = ocilogon("scott", "tiger", $db); $c2 = ocinlogon("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);
select_data($c1); select_data($c2);
rollback($c1);
select_data($c1); select_data($c2);
insert_data($c2); commit($c2);
select_data($c1);
delete_data($c1); select_data($c1); select_data($c2); commit($c1);
select_data($c1); select_data($c2);
drop_table($c1); echo "</pre></html>"; ?>
|
|
参见 ocilogon() 和
ociplogon()。