<?
//[Peringatan]: Mohon jangan memodifikasi tanpa izin
//------------------------------------------------ ------------------------------------------
//------------------------------------------------ ------------------------------------------
//
// [Nama file]: c_ora_db.inc
// [Fungsi]: Kelas fungsi publik Oracle
// [Penulis]: Tian Hui
//
// [Tanggal modifikasi terakhir]: 2001/05/11[cxx]
// [Aturan definisi variabel]: 'C_'=Tipe karakter,'I_'=Tipe bilangan bulat,'N_'=Tipe angka,'L_'=Tipe Boolean,'A_'=Tipe array
//------------------------------------------------ ------------------------------------------
//------------------------------------------------ ------------------------------------------
// ※db_logon() membuka koneksi database
// ※db_query() pilihan umum
// ※db_change() Fungsi universal untuk perubahan database (memasukkan, menghapus, memperbarui)
// ※db_insert() masukkan, panggil db_change() secara langsung
// ※db_delete() hapus, panggil db_change() secara langsung
// ※db_update() update, langsung hubungi db_change()
// ※db_commit() penyerahan transaksi
// ※db_rollback() pengembalian transaksi
// ※db_logoff() memutus koneksi database
//------------------------------------------------ ------------------------------------------
Kelas c_ora_db
{
//------------------------------------------------ ------------------------------------------
// definisi variabel
//------------------------------------------------ ------------------------------------------
var $C_pengguna = ""; //Nama pengguna basis data
var $C_passwd = ""; //Kata sandi basis data
var $C_db = ""; //nama basis data
var $I_linkID = 0; //Pegangan koneksi
var $I_stmtID = 0; //Pegangan kueri
var $warna = ""; //warna global
//------------------------------------------------ ------------------------------------------
//------------------------------------------------ ------------------------------------------
// Nama fungsi: db_logon()
// Fungsi: Membuka koneksi database
// Parameter: tidak ada
//Nilai kembalian: pegangan koneksi (integer)
// Keterangan: Tidak ada
//------------------------------------------------ ------------------------------------------
fungsi db_logon()
{
$ini->I_linkID = @OCILogon($ini->C_user,$ini->C_passwd,$ini->C_db);
if ($this->I_linkID == 0){AlertExit('Link database gagal, silakan hubungi DBA!');}
kembalikan $ini->I_linkID;
}
//------------------------------------------------ ------------------------------------------
//------------------------------------------------ ------------------------------------------
// Nama fungsi: db_query($C_sql,$A_define="",$I_start=-1,$I_end=-1)
// Fungsi: pilih
// Parameter: pernyataan sql $C_sql
// $A_define kolom yang akan diikat. tipe larik
// $I_start mulai mengambil catatan - 1 akan mengambil semua catatan kueri
// $I_end mengakhiri pengambilan record
//Nilai yang dikembalikan: array dua dimensi ($A_rs)
// Keterangan: Nilai field terkait dapat diakses melalui angka 0,1,2....; atau nilai field terkait juga dapat diakses dengan menanyakan nama field
// Misalnya, kolom NAME pada rekaman pertama dapat diakses melalui $A_rs[0][0] atau $A_rs[0]['NAME'] atau $A_rs[0]['name']
// $I_start, $I_end adalah parameter yang digunakan dengan paging.
//------------------------------------------------ ------------------------------------------
fungsi db_query($C_sql,$A_define="",$I_start=-1,$I_end=-1)
{
if (!$C_sql){AlertExit("Parameter tidak lengkap!");}//Periksa parameter
//Deteksi koneksi
if ($this->I_linkID == 0){AlertExit('Link database gagal, silakan hubungi DBA!');}
//Deteksi format
$ini -> I_stmtID = OCIParse($ini -> I_linkID,$C_sql);
if (!$this -> I_stmtID){AlertExit('Kesalahan format SQL! Silakan hubungi programmer');}
//Jika bidang terikat tidak ditentukan, dapatkan dari pernyataan SQL
jika($A_define=="")
{
$A_Cur = meledak("pilih",$C_sql);
$A_Cur = meledak("dari",$A_Cur[1]);
$A_define = meledak(",",$A_Cur[0]);
}
//Mengikat field tabel database
if(gettype($A_define) == "array") //Kolom kueri adalah array
{
untuk($i=0;$i<hitungan($A_define);$i++)
{
$A_define_up[$i] = trim(strtoupper($A_define[$i])); //Menggunakan huruf besar dan menghilangkan spasi
}
untuk($i=0;$i<hitungan($A_define_up);$i++)
{
OCIDefineByName($ini -> I_stmtID,"$A_define_up[$i]",&$$A_define[$i]); //Mengikat
}
}
elseif(trim($A_define) <> "") //Hanya ada satu kolom kueri
{
$A_define_up = potong(strtoupper($A_define));
OCIDefineByName($ini -> I_stmtID,"$A_define_up",&$$A_define);
}
//Jalankan pernyataan SQL terikat
if(!OCIExecute($ini -> I_stmtID))
{
echo "<font color=red><b>Kesalahan eksekusi:</b></font>Kesalahan SQL:<font color=red>$C_sql</font><br>";
kembali salah;
}
$lower = 0; //Mengembalikan variabel kontrol subskrip dimensi pertama dari array dua dimensi
$cnt = 0; //Mulai mengambil pengenal
//Dapatkan catatan
sementara (OCIFetchInto($ini -> I_stmtID,&$saat ini,OCI_ASSOC))
{
//Dapatkan semua catatan yang ditanyakan
jika ($I_mulai == -1)
{
if (gettype($A_define) == "array") //Kolom kueri adalah array
{
untuk ($i=0;$i<hitungan($A_define);$i++)
{
if ($cur[$A_define_up[$i]] <> $$A_define[$i])
{
$$A_define[$i] = $cur[$A_define_up[$i]];
}
$A_rs[$lower][$i] = $$A_define[$i]; //Akses dengan angka
$A_rs[$lower][$A_define[$i]] = $$A_define[$i]; //Gunakan akses yang lebih kecil
$A_rs[$lower][$A_define_up[$i]] = $$A_define[$i]; //Akses dalam huruf besar
}
}
elseif (trim($A_define) <> "") //Hanya ada satu kolom kueri
{
if ($saat ini[$A_define_up] <> $$A_define)
{
$$A_define = $cur[$A_define_up];
}
$A_rs[$lower][0] = $$A_define; //Akses dengan angka
$A_rs[$lower][$A_define] = $$A_define; //Akses dalam huruf kecil
$A_rs[$lower][$A_define_up] = $$A_define; //Gunakan akses yang lebih besar
}
$lower++; //Subskrip ditambah satu
}
//Ambil catatan tertentu (digunakan dengan paging)
jika ($I_mulai <> -1)
{
jika ($cnt >= $I_start)
{
$cnt++;
jika ($I_end - $I_start <> 0)
{
$I_end--;
jika (gettype($A_define) == "array")
{
untuk($i=0;$i<hitungan($A_define_up);$i++)
{
if ($cur[$A_define_up[$i]] <> $$A_define[$i])
{
$$A_define[$i] = $cur[$A_define_up[$i]];
}
$A_rs[$lower][$i] = $$A_define[$i]; //Akses dengan angka
$A_rs[$lower][$A_define[$i]] = $$A_define[$i]; //Gunakan akses yang lebih kecil
$A_rs[$lower][$A_define_up[$i]] = $$A_define[$i]; //Akses dalam huruf besar
}
}elseif(trim($A_define) <> "")
{
if ($saat ini[$A_define_up] <> $$A_define)
{
$$A_define = $cur[$A_define_up];
}
$A_rs[$lower][0] = $$A_define; //Akses dengan angka
$A_rs[$lower][$A_define] = $$A_define; //Gunakan akses yang lebih kecil
$A_rs[$lower][$A_define_up] = $$A_define; //Akses dalam huruf besar
}
$lebih rendah++;
}kalau tidak
{
break; //Jika $I_end-$I_start=0, itu berarti mengambil record dan melompat keluar dari perulangan while
}
}kalau tidak
{
$cnt++; //Jika $cnt<$I_start,$cnt++
}
}
} //Akhir dari sementara
//Lepaskan pegangan dan kembalikan data kueri (array dua dimensi)
Pernyataan OCIFree($ini -> I_stmtID);
kembalikan $A_rs;
} //Akhir fungsi
//------------------------------------------------ ------------------------------------------
//------ --------------------------------------------------- -----------------------------------
// Nama fungsi: db_change($C_sql,$A_bind)
// Fungsi: perubahan db
// Parameter: pernyataan sql $C_sql
// $A_bind kolom yang akan diikat. tipe larik
//Nilai kembalian: Nilai Boolean
// Catatan: menyisipkan, menghapus, memperbarui adalah hal biasa
//------------------------------------------------ ------------------------------------------
fungsi db_change($C_sql,$A_bind="")
{
if (!$C_sql){AlertExit("Parameter tidak lengkap!");}//Periksa parameter
//Deteksi koneksi
if($this -> I_linkID==""){ AlertExit("Database kami sibuk, silakan sambungkan lagi nanti!");}
//Deteksi format
$ini -> I_stmtID = OCIParse($ini -> I_linkID,$C_sql);
if (!$this -> I_stmtID){AlertExit('Kesalahan format SQL! Silakan hubungi programmer');}
//Mengikat
if(gettype($A_bind) == "array")
{
untuk($i=0;$i<hitungan($A_bind);$i++)
{
global $$A_bind[$i];
$$A_bind[$i] = StripSlash($$A_bind[$i]); //Hapus karakter garis miring terbalik
$$A_bind[$i] = str_replace("<?","< ?",$$A_bind[$i]); //Menyaring tag PHP
}
untuk($i=0;$i<hitung($A_bind);$i++){
OCIBindByName($ini -> I_stmtID, ":$A_bind[$i]", &$$A_bind[$i], -1);
}
}
elseif(trim($A_bind) <> "") //Bukan array, tapi karakter
{
global $$A_bind;
$$A_bind = StripSlash($$A_bind);
$$A_bind = str_replace("<?","< ?",$$A_bind); //Menyaring tag PHP
OCIBindByName($ini -> I_stmtID, ":$arrBind", &$$A_bind, -1);
}
//Jalankan dan periksa apakah berhasil
if(!OCIExecute($ini -> I_stmtID,OCI_DEFAULT))
{
echo "<font color=red><b>Kesalahan eksekusi:</b></font>Kesalahan SQL:<font color=red>$C_sql</font><br>";
kembali salah;
}
/*//Mengembalikan jumlah baris yang terpengaruh
global $I_changenum;
$I_changenum = OCINumrows($ini -> I_stmtID);*/
//Lepaskan pegangannya dan kembalikan nilainya
OCIFreeStatement($ini -> I_stmtID);
kembali benar;
}
//------------------------------------------------ ------------------------------------------
//------ --------------------------------------------------- -----------------------------------
// Nama fungsi: db_delete($C_sql)
// Fungsi: hapus
// Parameter: Pernyataan sql C_sql
//Nilai kembalian: Nilai Boolean
// Catatan: Fungsi ini hanya untuk penggunaan intuitif, pada dasarnya memanggil db_change()
//------------------------------------------------ ------------------------------------------
fungsi db_delete($C_sql)
{
kembalikan $ini -> db_change($C_sql);
}
//------------------------------------------------ ------------------------------------------
//------ --------------------------------------------------- -----------------------------------
// Nama fungsi: db_insert($C_sql,A_bind)
// Fungsi: menyisipkan
// Parameter: Pernyataan sql C_sql
// A_bind mengikat
//Nilai kembalian: Nilai Boolean
// Catatan: Fungsi ini hanya untuk penggunaan intuitif, pada dasarnya memanggil db_change()
//------------------------------------------------ ------------------------------------------
fungsi db_insert($C_sql,$A_bind="")
{
kembalikan $ini -> db_change($C_sql,$A_bind);
}
//------------------------------------------------ ------------------------------------------
//------ --------------------------------------------------- -----------------------------------
// Nama fungsi: db_update($C_sql,A_bind)
// Fungsi: perbarui
// Parameter: Pernyataan sql C_sql
// A_bind mengikat
//Nilai kembalian: Nilai Boolean
// Catatan: Fungsi ini hanya untuk penggunaan intuitif, pada dasarnya memanggil db_change()
//------------------------------------------------ ------------------------------------------
fungsi db_update($C_sql,$A_bind="")
{
kembalikan $ini -> db_change($C_sql,$A_bind);
}
//------------------------------------------------ ------------------------------------------
//------ --------------------------------------------------- -----------------------------------
// Nama fungsi: db_commit()
// Fungsi : penyerahan transaksi
// Parameter: tidak ada
//Nilai kembalian: Nilai Boolean
// Keterangan: Tidak ada
//------------------------------------------------ ------------------------------------------
fungsi db_commit()
{
return (OCICommit($ini->I_linkID));
}
//------------------------------------------------ ------------------------------------------
//------ --------------------------------------------------- -----------------------------------
// Nama fungsi: db_rollback()
// Fungsi: pengembalian transaksi
// Parameter: tidak ada
//Nilai kembalian: Nilai Boolean
// Keterangan: Tidak ada
//------------------------------------------------ ------------------------------------------
fungsi db_rollback()
{
kembali (OCIRollback($ini->I_linkID));
}
//------------------------------------------------ ------------------------------------------
//------------------------------------------------ ------------------------------------------
// Nama fungsi: db_logoff()
// Fungsi : Memutuskan koneksi database
// Parameter: tidak ada
//Nilai kembalian: Nilai Boolean
// Keterangan: Tidak ada
//------------------------------------------------ ------------------------------------------
fungsi db_logoff()
{
kembali (OCILogoff($ini->I_linkID));
}
//------------------------------------------------ ------------------------------------------
//------------------------------------------------ ------------------------------------------
}
?>