ocilogon

(PHP 3>= 3.0.4, PHP 4 )

ocilogon -- Etablit une connexion à un serveur Oracle

Description

resource ocilogon ( string username, string password [, string db])

ocilogon() retourne un identifiant de connexion, nécessaire à la plupart des fonctions oci. Le paramètre optionnel db peut contenir le nom local du serveur Oracle, ou bien son nom dans la table d'entrées tnsnames.ora à laquelle vous voulez vous connecter. Si le troisième paramètre n'est pas spécifié, PHP utilisera la variable d'environnement ORACLE_SID (instance Oracle) ou TWO_TASK (tnsnames.ora) pour déterminer la base à laquelle se connecter.

Les connexions sont partagées, à l'intérieur d'une même page avec ocilogon(). Cela signifie que COMMIT et ROLLBACK s'appliquent à toutes les transactions commencées à l'intérieur d'une même page, même si vous avez créé de multiples connexions.

Les connexions sont partagées au niveau de la page, lorsque vous utilisez ocilogon(). Cela signifie que les validations et annulations s'appliquent à toutes les transactions de la page, même si vous avez créé de multiples connexions à un même serveur Oracle.

Cet exemple montre comment les connexions sont partagées :

Exemple 1. Exemple avec ocilogon()

<?php
print "<HTML><PRE>";
$db = "";

$c1 = ocilogon("scott","tiger",$db);
$c2 = ocilogon("scott","tiger",$db);

function
create_table($conn)
{
$stmt = ociparse($conn,"create table scott.hallo (test varchar2(64))");
  
ociexecute($stmt);
  echo
$conn." a cr&eacute;&eacute; une table\n\n";
}

function
drop_table($conn)
{
$stmt = ociparse($conn,"drop table scott.hallo");
  
ociexecute($stmt);
  echo
$conn." a effac&eacute; une table\n\n";
}

function
insert_data($conn)
{
$stmt = ociparse($conn,"insert into scott.hallo
            values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))"
);
  
ociexecute($stmt,OCI_DEFAULT);
  echo
$conn." a ins&eacute;r&eacute; dans hallo\n\n";
}

function
delete_data($conn)
{
$stmt = ociparse($conn,"delete from scott.hallo");
  
ociexecute($stmt,OCI_DEFAULT);
  echo
$conn." a effac&eacute; dans hallo\n\n";
}

function
commit($conn)
{
ocicommit($conn);
  echo
$conn." valid&eacute;\n\n";
}

function
rollback($conn)
{
ocirollback($conn);
  echo
$conn." annul&eacute;\n\n";
}

function
select_data($conn)
{
$stmt = ociparse($conn,"select * from scott.hallo");
  
ociexecute($stmt,OCI_DEFAULT);
  echo
$conn."----selection\n\n";
  while (
ocifetch($stmt))
    echo
$conn." <".ociresult($stmt,"TEST").">\n\n";
  echo
$conn."----fin\n\n";
}

create_table($c1);
insert_data($c1);   // Insertion avec c1
insert_data($c2);   // Insertion avec c2

select_data($c1);   // Resultats des insertions
select_data($c2);   

rollback($c1);      // Annulation sur c1

select_data($c1);   // Les deux insertions ont &eacute;t&eacute; annul&eacute;es
select_data($c2);   

insert_data($c2);   // Insertion avec c2
commit($c2);        // Validation avec c2

select_data($c1);   // Le r&eacute;sultat de l'insertion via c2

delete_data($c1);   // Effacement de toutes les lignes avec c1
select_data($c1);   // Aucune ligne lue
select_data($c2);   // Aucune ligne lue
commit($c1);        // Validation avec c1

select_data($c1);   // Aucune ligne lue
select_data($c2);   // Aucune ligne lue

drop_table($c1);
print
"</PRE></HTML>";
?>

Voir aussi ociplogon() et ocinlogon().