Description
resource
oci_connect ( string username, string password [, string db [, string charset [, int session_mode]]] )
oci_connect() returns a connection identifier
needed for most other OCI calls. The optional third parameter
can either contain the name of the local Oracle instance or the
name of the entry in tnsnames.ora to which
you want to connect.
If the optional third parameter is not specified, PHP uses the
environment variables ORACLE_SID (Oracle
instance) or TWO_TASK
(tnsnames.ora) to determine which database
to connect to.
Parameter session_mode 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,
oci_connect() 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.
Note:
The second and subsequent calls to oci_connect()
with the same parameters will return the connection handle returned
from the first call. This means that queries issued against one
handle are also applied to the other handles, because they are the
same handle. This behaviour is demonstrated in
Example 1 below. If you require two handles to be transactionally
isolated from each other, you should use
oci_new_connect() instead.
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.
Example 1. oci_connect() example <?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 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); // 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() returns FALSE if an error occured.
Note:
In PHP versions before 5.0.0 you must use ocilogon() instead.
This name still can be used, it was left as the alias of
oci_connect() for downwards compatability.
This, however, is deprecated and not recommended.
See also oci_pconnect(),
oci_new_connect() and
oci_close().