oci_new_connect
(PHP 5, PECL OCI8 >= 1.1.0)
oci_new_connect — Connect to the Oracle server using a unique connection
Descrizione
$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.
Elenco dei parametri
-
username -
The Oracle user name.
-
password -
The password for
username. -
connection_string -
Contiene l'istanza Oracle a cui collegarsi. Può essere una » stringa Easy Connect, oppure un Connect Name dal file tnsnames.ora, o il nome di una istanza Oracle locale.
Se non è specificato, PHP usa le variabili d'ambiente come
TWO_TASK(su Linux) oLOCAL(su Windows) eORACLE_SIDper determinare l'istanza Oracle a cui collegarsi.Per utilizzare il metodo Easy Connect, PHP deve essere linkato con le librerie Client di Oracle 10g o successivi. La stringa Easy Connect per Oracle 10g ha la forma: [//]host_name[:port][/service_name]. Con Oracle 11g, ha la forma: [//]host_name[:port][/service_name][:server_type][/instance_name]. I nomi dei servizi possono essere trovati eseguendo l'applicazione di Oracle lsnrctl status sul server contenente il database.
Il file tnsnames.ora può essere nel percorso di ricerca Oracle Net, che include $ORACLE_HOME/network/admin e /etc. In alternativa si imposti TNS_ADMIN in modo che $TNS_ADMIN/tnsnames.ora sia letto. Assicurarsi che il dameon web abbia accesso in lettura al file.
-
character_set -
Determina il set di caratteri utilizzato dalle librerie Client di Oracle. Non è necessario che il set di caratteri corrisponda a quello usato dal database. Se non corrisponde, Oracle fara il suo meglio per convertire i dati da e verso il set di caratteri del database. A seconda del set di caratteri, ciò potrebbe dare risultati non utilizzabili. La conversione inoltre inecessita di tempo aggiuntivo.
Se non specificato, le librerie Client di Oracle determinano un set di caratteri dalla variabile d'ambiente
NLS_LANG.Fornire questo parametro può ridurre il tempo di connessione.
-
session_mode -
Questo parametro è disponibile da PHP 5 (PECL OCI8 1.1) e accetta i seguenti valori:
OCI_DEFAULT,OCI_SYSOPEReOCI_SYSDBA. SeOCI_SYSOPERoOCI_SYSDBAsono specificate, questa funzione tenta di creare connessioni privilegiate usando delle credenziali esterne. Le connessioni privilegiate sono disabilitate per default. Per abilitarle occorre impostare oci8.privileged_connect a On.PHP 5.3 (PECL OCI8 1.3.4) ha introdotto il valore
OCI_CRED_EXT. Questo dice ad Oracle di usare l'autenticazione esterna o del Sistema Operativo, che deve essere configurata nel database. Il flagOCI_CRED_EXTpuò essere usato solo con username "/" e una password vuota. oci8.privileged_connect può essere On oppure Off.OCI_CRED_EXTpuò essere combinato ai modiOCI_SYSOPERoOCI_SYSDBA.OCI_CRED_EXTnon è ammessa su Windows per ragioni di sicurezza.
Valori restituiti
Returns a connection identifier or FALSE on error.
Esempi
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>";
?>
Note
Nota:
In PHP versions before 5.0.0 you must use ocinlogon() instead. Il vecchio nome di funzione può ancora essere usato nella versione attuale, ma è comunque deprecato e non raccomandato.
Vedere anche:
- oci_connect() - Connect to an Oracle database
- oci_pconnect() - Connect to an Oracle database using a persistent connection
