(PHP 5, PECL OCI8 >= 1.1.0)
oci_new_connect — Connect to the Oracle server using a unique connection
$username
, string $password
[, string $connection_string
[, string $character_set
[, int $session_mode
]]] )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.
username
The Oracle user name.
password
The password for username
.
connection_string
Conține instanța Oracle la care se efectuează conectarea. Poate fi un » șir Easy Connect, sau o Denumire de conexiune din fișierul tnsnames.ora, sau denumirea unei instanțe locale Oracle.
Dacă nu este specificat, PHP
utilizează variabile de mediu, cum ar fi TWO_TASK
(în
Linux) sau LOCAL
(în Windows) și ORACLE_SID
pentru a determina instanța Oracle la care
trebuie efectuată conexiunea.
Pentru a utiliza metoda Easy Connect, PHP trebuie să fie legat cu bibliotecile-client Oracle 10g sau ulterioare. Șirul Easy Connect pentru Oracle 10g este de forma: [//]host_name[:port][/service_name]. Pentru Oracle 11g sintaxa este: [//]host_name[:port][/service_name][:server_type][/instance_name]. Denumirile serviciilor pot fi găsite rulând utilitara Oracle lsnrctl status pe mașina unde rulează serverul de baze de date.
Fișierul tnsnames.ora poate fi în calea de căutare Oracle Net, care include $ORACLE_HOME/network/admin și /etc. Ca alternativă, poate fi stabilit TNS_ADMIN astfel încât $TNS_ADMIN/tnsnames.ora este citit. Asigurați-vă că serviciul web posedă dreptul de citire a acestui fișier.
character_set
Determină setul de caractere utilizat de bibliotecile-client Oracle. Setul de caractere nu trebuie în mod obligatoriu să se potrivească cu setul de caractere al bazei de date. Dacă nu se potrivește, Oracle va face tot posibilul să convertească datele din și în setul de caractere al bazei de date. În dependență de seturile de caractere aceasta poate să ducă la rezultate incorecte. Convertirea de asemenea impune un timp mărit de prelucrare.
Dacă nu este specificat,
bibliotecile-client Oracle determină setul de caractere din variabila de mediu
NLS_LANG
.
Transmiterea acestui parametru poate reduce timpul de conectare.
session_mode
Acest
parametru este disponibil începând cu versiunea PHP 5 (PECL OCI8 1.1) și
acceptă următoarele valori: OCI_DEFAULT
,
OCI_SYSOPER
și OCI_SYSDBA
.
Dacă sunt specificate OCI_SYSOPER
sau
OCI_SYSDBA
, această funcție va încerca să stabilească o
conexiune privilegiată utilizând credențiale externe. Conexiunile privilegiate
sunt dezactivate implicit. Pentru a le activa trebuie să stabiliți
oci8.privileged_connect
în On.
PHP 5.3 (PECL OCI8 1.3.4) a
introdus valoarea modului OCI_CRED_EXT
. Aceasta indică
Oracle să utilizeze autentificare Externă sau la nivel de S.O., ceea ce trebuie
configurat în baza de date. Fanionul OCI_CRED_EXT
poate fi
utilizat doar cu numele utilizatorului "/" și o parolă vidă.
oci8.privileged_connect
poate fi On sau Off.
OCI_CRED_EXT
poate fi combinat cu modul
OCI_SYSOPER
sau OCI_SYSDBA
.
OCI_CRED_EXT
nu este susținut pe Windows din motive de
securitate.
Returns a connection identifier or FALSE
on error.
The following demonstrates how you can separate connections.
Example #1 oci_new_connect() example
<?php
echo "<html><pre>";
$db = "";
$c1 = oci_connect("scott", "tiger", $db);
$c2 = oci_new_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);
select_data($c1);
select_data($c2);
rollback($c1);
select_data($c1);
select_data($c2);
insert_data($c2);
commit($c2);
select_data($c1);
delete_data($c1);
select_data($c1);
select_data($c2);
commit($c1);
select_data($c1);
select_data($c2);
drop_table($c1);
echo "</pre></html>";
?>
Notă:
In PHP versions before 5.0.0 you must use ocinlogon() instead. Denumirea veche a funcției poate fi încă utilizată în versiunile curente, însă ea este învechită și nu este recomandată.