Returns a connection identifier needed for most other OCI8 operations.
See Connection Handling for general information on connection management and connection pooling.
From PHP 5.1.2 (PECL OCI8 1.1) oci_close() can be used to close the connection.
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 transactions in one handle are also in the other handles, because they use the same underlying database connection. If two handles need to be transactionally isolated from each other, use oci_new_connect() instead.
The Oracle user name.
The password for username
.
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, 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]. 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 $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.
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.
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.
Returns a connection identifier or FALSE
on error.
An incorrectly installed or configured OCI8 extension will often manifest itself as a connection problem or error. See Installing/Configuring for troubleshooting information.
<?php // Connects to the XE service (i.e. database) on the "localhost" machine $conn = oci_connect('hr', 'welcome', 'localhost/XE'); if (!$conn) { $e = oci_error(); trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); } $stid = oci_parse($conn, 'SELECT * FROM employees'); oci_execute($stid); echo "<table border='1'>\n"; while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { echo "<tr>\n"; foreach ($row as $item) { echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : " ") . "</td>\n"; } echo "</tr>\n"; } echo "</table>\n"; ?>
<?php // Connects to the MYDB database described in tnsnames.ora file, // One example tnsnames.ora entry for MYDB could be: // MYDB = // (DESCRIPTION = // (ADDRESS = (PROTOCOL = TCP)(HOST = mymachine.oracle.com)(PORT = 1521)) // (CONNECT_DATA = // (SERVER = DEDICATED) // (SERVICE_NAME = XE) // ) // ) $conn = oci_connect('hr', 'welcome', 'MYDB'); if (!$conn) { $e = oci_error(); trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); } $stid = oci_parse($conn, 'SELECT * FROM employees'); oci_execute($stid); echo "<table border='1'>\n"; while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { echo "<tr>\n"; foreach ($row as $item) { echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : " ") . "</td>\n"; } echo "</tr>\n"; } echo "</table>\n"; ?>
<?php $conn = oci_connect('hr', 'welcome', 'localhost/XE', 'AL32UTF8'); if (!$conn) { $e = oci_error(); trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); } $stid = oci_parse($conn, 'SELECT * FROM employees'); oci_execute($stid); echo "<table border='1'>\n"; while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { echo "<tr>\n"; foreach ($row as $item) { echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : " ") . "</td>\n"; } echo "</tr>\n"; } echo "</table>\n"; ?>
<?php $c1 = oci_connect("hr", "welcome", 'localhost/XE'); $c2 = oci_connect("hr", "welcome", 'localhost/XE'); // Both $c1 and $c2 show the same PHP resource id meaning they use the // same underlying database connection echo "c1 is $c1<br>\n"; echo "c2 is $c2<br>\n"; function create_table($conn) { $stmt = oci_parse($conn, "create table hallo (test varchar2(64))"); oci_execute($stmt); echo "Created table<br>\n"; } function drop_table($conn) { $stmt = oci_parse($conn, "drop table hallo"); oci_execute($stmt); echo "Dropped table<br>\n"; } function insert_data($connname, $conn) { $stmt = oci_parse($conn, "insert into hallo values(to_char(sysdate,'DD-MON-YY HH24:MI:SS'))"); oci_execute($stmt, OCI_DEFAULT); echo "$connname inserted row without committing<br>\n"; } function rollback($connname, $conn) { oci_rollback($conn); echo "$connname rollback<br>\n"; } function select_data($connname, $conn) { $stmt = oci_parse($conn, "select * from hallo"); oci_execute($stmt, OCI_DEFAULT); echo "$connname ----selecting<br>\n"; while (oci_fetch($stmt)) { echo " " . oci_result($stmt, "TEST") . "<br>\n"; } echo "$connname ----done<br>\n"; } create_table($c1); insert_data('c1', $c1); // Insert a row using c1 sleep(2); // sleep to show a different timestamp for the 2nd row insert_data('c2', $c2); // Insert a row using c2 select_data('c1', $c1); // Results of both inserts are returned select_data('c2', $c2); // Results of both inserts are returned rollback('c1', $c1); // Rollback using c1 select_data('c1', $c1); // Both inserts have been rolled back select_data('c2', $c2); drop_table($c1); // Closing one of the connections makes the PHP variable unusable, but // the other could be used oci_close($c1); echo "c1 is $c1<br>\n"; echo "c2 is $c2<br>\n"; // Output is: // c1 is Resource id #5 // c2 is Resource id #5 // Created table // c1 inserted row without committing // c2 inserted row without committing // c1 ----selecting // 09-DEC-09 12:14:43 // 09-DEC-09 12:14:45 // c1 ----done // c2 ----selecting // 09-DEC-09 12:14:43 // 09-DEC-09 12:14:45 // c2 ----done // c1 rollback // c1 ----selecting // c1 ----done // c2 ----selecting // c2 ----done // Dropped table // c1 is // c2 is Resource id #5 ?>
Please login to continue.