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 | 
<?phpecho "<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().