Function.oci-connect
Aus PHP-Wiki
oci_connect — Establishes a connection to the Oracle server
Inhaltsverzeichnis |
Beschreibung
resource oci_connect ( string $username , string $password [, string $db [, string $charset [, int $session_mode ]]] )
Returns a connection identifier needed for most other OCI calls.
Parameter-Liste
- username
- The Oracle user name.
- password
- The password for username .
- db
- 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.
- charset
- Wenn Sie den Oracle Server in der Version 9.2 oder höher benutzen, können Sie den Zeichensatz, der für eine neue Verbindung genutzt werden soll, mit dem charset Parameter angeben. Verwenden Sie Oracle in einer Version < 9.2 wird dieser Parameter ignoriert und stattdessen die Umgebungsvariable NLS_LANG benutzt.
- session_mode
- 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.
Rückgabewerte
Returns a connection identifier or FALSE on error.
Beispiele
Beispiel #1 oci_connect() example
<?php echo ""; $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 ""; ?>
Anmerkungen
Hinweis:
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.
Hinweis:
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.
Hinweis:
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.