OCILogon

(PHP 3>= 3.0.4, PHP 4 >= 4.0.0)

OCILogon -- Baut eine OCI-Verbindung auf

Beschreibung

int OCILogon (string Benutzername, string Passwort [, string Datenbankname])

OCILogon() gibt bei erfolgreicher Verbindung einen Verbindungsindex zurück. Bei einem Fehler FALSE. Der optionale dritte Parameter kann auf die lokale Oracleinstanz gesetzt werden oder auf die, zu welcher sich verbunden werden soll. Diese sollte in der tnsnames.ora aufgeführt sein. Wird der dritte Parameter nicht gesetzt nimmt PHP automatisch den Wert aus der Umgebungsvariable ORACLE_SID oder TWO_TASK.

Verbindungen werden gemeinsam wärend eines Skriptes genutzt, wenn OCILogon() benutzt wird. Das heisst, dass commits und rollbacks sich auf alle offenen Transaktionen im Skript auswirken, ausser wenn explizit mehrere Verbindungen aufgebaut werden.

Dies Beispiel zeigt, wie die Verbindungen gemeinsam genutzt werden.

Beispiel 1. 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." created table\n\n";
}

function drop_table($conn)
{ $stmt = ociparse($conn,"drop table scott.hallo");
  ociexecute($stmt);
  echo $conn." dropped 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." inserted hallo\n\n";
}

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

function commit($conn)
{ ocicommit($conn);
  echo $conn." commited\n\n";
}

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

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

create_table($c1);
insert_data($c1);   // trägt eine Zeile ein und benutzt dabei c1
insert_data($c2);   // trägt eine Zeile ein und benutzt dabei c2

select_data($c1);   // die Ergebnisse beider Eintragungen wird zurückgegeben
select_data($c2);   

rollback($c1);      // Rollback benutzt c1

select_data($c1);   // ein Rollback auf beide Eintragungen
select_data($c2);   

insert_data($c2);   // trägt eine Zeile ein und benutzt dabei c2
commit($c2);        // der commit für c2

select_data($c1);   // das Ergebnis der Eintragung über c2 wird zurückgegeben

delete_data($c1);   // löschen aller Zeilen über c1
select_data($c1);   // keine Zeile zurückgegeben
select_data($c2);   // keine Zeile zurückgegeben
commit($c1);        // commit für c1

select_data($c1);   // keine Zeile zurückgegeben
select_data($c2);   // keine Zeile zurückgegeben


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

Bitte beachte auch OCIPLogon() und OCINLogon().