Jumat, 08 Agustus 2008

Koneksi PHP dan Oracle

PHP dan oracle adalah software yang sangat sering dipakai oleh dunia IT. PHP sudah sangat terkenal dalam dunia web, dan oracle sangat banyak digunakan dalam dunia Data base. Sedangkan dua dunia ini, web dan data base sangat erat hubungannya. Oleh karena itu akan diulas bagaimana cara melakukan koneksi pada keduanya. Disini saya mengunakan PHP5, Apache2 dan Oracle 10 G pada windows xp.
Setelah ketiganya terinstall ( jika Apache dan oracle diinstal terpisah maka diperlukan Oracle client untuk oracle 10G) ,maka akan dilakukan configurasi pada php.ini, pada baris ;extension=php_oci8.dll hilangkan tanda ';'. setelah itu copykan oci.dll yang didapat di tempat anda menginstall oracle ( contoh: 'D:\oracle\product\10.1.0\Db_1\BIN\') ke folder bin pada apache.
Sekarang anda telah bisa terkoneksi dengan Oracle 10G lewat PHP.

contoh penggunaannya sebagai berikut (diambil dari manual pada php.net):
echo "
";
$db = "";

$c1 = oci_connect("scott", "tiger", $db);
$c2 = oci_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); // Insert a row using c1
insert_data($c2); // Insert a row using c2

select_data($c1); // Results of both inserts are returned
select_data($c2);

rollback($c1); // Rollback using c1

select_data($c1); // Both inserts have been rolled back
select_data($c2);

insert_data($c2); // Insert a row using c2
commit($c2); // Commit using c2

select_data($c1); // Result of c2 insert is returned

delete_data($c1); // Delete all rows in table using c1
select_data($c1); // No rows returned
select_data($c2); // No rows returned
commit($c1); // Commit using c1

select_data($c1); // No rows returned
select_data($c2); // No rows returned

drop_table($c1);
echo
"
"
;
?>


?>