Javascript debugger
Website design
↑
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.
The Oracle user name.
The password for username.
This optional parameter can either contain the name of the local
Oracle instance or the name of the entry in
tnsnames.ora
.
If the not specified, PHP uses environment variables
ORACLE_SID
and TWO_TASK
to
determine the name of local Oracle instance and location of
tnsnames.ora
accordingly.
Using Oracle server version 9.2 and greater, you can indicate charset parameter, which will be used in the new connection. If you're using Oracle server < 9.2, this parameter will be ignored and NLS_LANG environment variable will be used instead.
This parameter is available since version 1.1 and accepts the
following values: OCI_DEFAULT
,
OCI_SYSOPER
and OCI_SYSDBA
.
If either OCI_SYSOPER
or
OCI_SYSDBA
were specified, this function will try
to establish privileged connection using external credentials.
Privileged connections are disabled by default. To enable them you
need to set oci8.privileged_connect
to On
.
The following demonstrates how you can separate connections.
<?php
echo "<html><pre>";
$db = "";
$c1 = oci_connect("scott", "tiger", $db);
$c2 = oci_new_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 table\n\n";
}
function drop_table($conn)
{
$stmt = oci_parse($conn, "drop table scott.hallo");
oci_execute($stmt);
echo $conn . " dropped table\n\n";
}
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 hallo\n\n";
}
function delete_data($conn)
{
$stmt = oci_parse($conn, "delete from scott.hallo");
oci_execute($stmt, OCI_DEFAULT);
echo $conn . " deleted hallo\n\n";
}
function commit($conn)
{
oci_commit($conn);
echo $conn . " committed\n\n";
}
function rollback($conn)
{
oci_rollback($conn);
echo $conn . " rollback\n\n";
}
function select_data($conn)
{
$stmt = oci_parse($conn, "select * from scott.hallo");
oci_execute($stmt, OCI_DEFAULT);
echo $conn . "----selecting\n\n";
while (oci_fetch($stmt)) {
echo $conn . " <" . oci_result($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>";
?>
If you're using PHP with Oracle Instant Client, you can use easy connect
naming method described here:
» http://download-west.oracle.com/docs/cd/B12037_01/network.101/b10775/naming.htm#i498306.
Basically this means you can specify "//db_host[:port]/database_name"
as database name. But if you want to use the old way of naming you
must set either ORACLE_HOME
or
TNS_ADMIN
.
In PHP versions before 5.0.0 you must use ocinlogon() instead. This name still can be used, it was left as alias of oci_new_connect() for downwards compatability. This, however, is deprecated and not recommended.
oci_connect() |
oci_pconnect() |