OCI8 Funzioni
PHP Manual

oci_new_connect

(PHP 5, PECL OCI8 >= 1.1.0)

oci_new_connectConnect to the Oracle server using a unique connection

Descrizione

resource oci_new_connect ( string $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) o LOCAL (su Windows) e ORACLE_SID per 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_SYSOPER e OCI_SYSDBA. Se OCI_SYSOPER o OCI_SYSDBA sono 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 flag OCI_CRED_EXT può essere usato solo con username "/" e una password vuota. oci8.privileged_connect può essere On oppure Off.

OCI_CRED_EXT può essere combinato ai modi OCI_SYSOPER o OCI_SYSDBA.

OCI_CRED_EXT non è 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($stmtOCI_DEFAULT);
  echo 
$conn " inserted hallo\n\n";
}

function 
delete_data($conn)
{
  
$stmt oci_parse($conn"delete from scott.hallo");
  
oci_execute($stmtOCI_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($stmtOCI_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:


OCI8 Funzioni
PHP Manual