Connect to the Oracle server using a unique connection

- « oci_new_collection

- oci_new_cursor »

- PHP Manual
- OCI8 Functions
- Connect to the Oracle server using a unique connection

# oci_new_connect

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_new_connect — Connect to the Oracle server using a unique connection

### Description

oci_new_connect(
string `$username`,
string `$password`,
?string `$connection_string` = `null`,
string `$encoding` = "",
int `$session_mode` = `OCI_DEFAULT`
): resource|false

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.

### Parameters

`username`

  The Oracle user name.

`password`

  The password for `username`.

`connection_string`

  Contains the `Oracle instance` to connect to. It can be an » Easy Connect string, or a Connect Name from the tnsnames.ora file, or the name of a local Oracle instance.

  If not specified or `null`, PHP uses environment variables such as `TWO_TASK` (on Linux) or `LOCAL` (on Windows) and `ORACLE_SID` to determine the `Oracle instance` to connect to.

  To use the Easy Connect naming method, PHP must be linked with Oracle 10g or greater Client libraries. The Easy Connect string for Oracle 10g is of the form: [//]host_name[:port][/service_name]. From Oracle 11g, the syntax is: [//]host_name[:port][/service_name][:server_type][/instance_name]. Further options were introduced with Oracle 19c, including timeout and keep-alive settings. Refer to Oracle documentation. Service names can be found by running the Oracle utility `lsnrctl status` on the database server machine.

  The tnsnames.ora file can be in the Oracle Net search path, which includes /your/path/to/instantclient/network/admin, $ORACLE_HOME/network/admin and /etc. Alternatively set `TNS_ADMIN` so that $TNS_ADMIN/tnsnames.ora is read. Make sure the web daemon has read access to the file.

`encoding`

  Determines the character set used by the Oracle Client libraries. The character set does not need to match the character set used by the database. If it doesn't match, Oracle will do its best to convert data to and from the database character set. Depending on the character sets this may not give usable results. Conversion also adds some time overhead.

  If not specified, the Oracle Client libraries determine a character set from the `NLS_LANG` environment variable.

  Passing this parameter can reduce the time taken to connect.

`session_mode`

  This parameter is available since version PHP 5 (PECL OCI8 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`.

  PHP 5.3 (PECL OCI8 1.3.4) introduced the `OCI_CRED_EXT` mode value. This tells Oracle to use External or OS authentication, which must be configured in the database. The `OCI_CRED_EXT` flag can only be used with username of "/" and a empty password. oci8.privileged_connect may be `On` or `Off`.

  `OCI_CRED_EXT` may be combined with the `OCI_SYSOPER` or `OCI_SYSDBA` modes.

  `OCI_CRED_EXT` is not supported on Windows for security reasons.

### Return Values

Returns a connection identifier or `false` on error.

### Changelog

Version | Description
--- | ---
8.0.0, PECL OCI8 3.0.0 | `connection_string` is now nullable.

### Examples

The following demonstrates how you can separate connections.

Example #1 oci_new_connect() example

    <?php// create table mytab (mycol number);function query($name, $c){    echo "Querying $name\n";    $s = oci_parse($c, "select * from mytab");    oci_execute($s, OCI_NO_AUTO_COMMIT);    $row = oci_fetch_array($s, OCI_ASSOC);    if (!$row) {        echo "No rows\n";    } else {        do {            foreach ($row as $item)                echo $item . " ";            echo "\n";        } while (($row = oci_fetch_array($s, OCI_ASSOC)) != false);    }}$c1 = oci_connect("hr", "welcome", "localhost/orcl");$c2 = oci_new_connect("hr", "welcome", "localhost/orcl");$s = oci_parse($c1, "insert into mytab values(1234)");oci_execute($s, OCI_NO_AUTO_COMMIT);query("basic connection", $c1);query("new connection", $c2);oci_commit($c1);query("new connection after commit", $c2);// Output is://   Querying basic connection//   1234 //   Querying new connection//   No rows//   Querying new connection after commit//   1234 ?>

See oci_connect() for further examples of parameter usage.

### See Also

- oci_connect() - Connect to an Oracle database
- oci_pconnect() - Connect to an Oracle database using a persistent connection