-
//[คำเตือน]: กรุณาอย่าแก้ไขโดยไม่ได้รับอนุญาต
//------------------------------------------------ -----------------------------------------------
//------------------------------------------------ -----------------------------------------------
-
// [ชื่อไฟล์]: c_ora_db.inc
// [ฟังก์ชั่น]: คลาสฟังก์ชันสาธารณะของ Oracle
// [ผู้แต่ง]: เทียนฮุ่ย
-
// [วันที่แก้ไขล่าสุด]: 2001/05/11[cxx]
// [กฎการกำหนดตัวแปร]: 'C_'=ประเภทอักขระ,'I_'=ประเภทจำนวนเต็ม,'N_'=ประเภทตัวเลข,'L_'=ประเภทบูลีน,'A_'=ประเภทอาร์เรย์
//------------------------------------------------ -----------------------------------------------
//------------------------------------------------ -----------------------------------------------
// ※db_logon() เปิดการเชื่อมต่อฐานข้อมูล
// ※db_query() เลือกทั่วไป
// ※db_change() ฟังก์ชันสากลสำหรับการเปลี่ยนแปลงฐานข้อมูล (แทรก ลบ อัปเดต)
// ※db_insert() ใส่ เรียก db_change() โดยตรง
// ※db_delete() ลบ โทร db_change() โดยตรง
// ※db_update() อัปเดต เรียก db_change() โดยตรง
// ※db_commit() การส่งธุรกรรม
// ※db_rollback() การย้อนกลับธุรกรรม
// ※db_logoff() ตัดการเชื่อมต่อฐานข้อมูล
//------------------------------------------------ -----------------------------------------------
คลาส c_ora_db
-
//------------------------------------------------ -----------------------------------------------
// นิยามตัวแปร
//------------------------------------------------ -----------------------------------------------
var $C_user = ""; //ชื่อผู้ใช้ฐานข้อมูล
var $C_passwd = ""; // รหัสผ่านฐานข้อมูล
var $C_db = ""; //ชื่อฐานข้อมูล
var $I_linkID = 0; //ตัวจัดการการเชื่อมต่อ
var $I_stmtID = 0; //ตัวจัดการแบบสอบถาม
var $color = ""; // สีสากล
//------------------------------------------------ -----------------------------------------------
//------------------------------------------------ -----------------------------------------------
// ชื่อฟังก์ชัน: db_logon()
// ฟังก์ชั่น: เปิดการเชื่อมต่อฐานข้อมูล
// พารามิเตอร์: ไม่มี
//ค่าที่ส่งคืน: หมายเลขอ้างอิงการเชื่อมต่อ (จำนวนเต็ม)
// หมายเหตุ: ไม่มี
//------------------------------------------------ -----------------------------------------------
ฟังก์ชั่น db_logon()
-
$this->I_linkID = @OCILogon($this->C_user,$this->C_passwd,$this->C_db);
if ($this->I_linkID == 0){AlertExit('Database link failed, please contact the DBA!');}
กลับ $this->I_linkID;
-
//------------------------------------------------ -----------------------------------------------
//------------------------------------------------ -----------------------------------------------
// ชื่อฟังก์ชัน: db_query($C_sql,$A_define="",$I_start=-1,$I_end=-1)
// ฟังก์ชั่น: เลือก
// พารามิเตอร์: คำสั่ง $C_sql sql
// $A_define ฟิลด์ที่จะผูก ประเภทอาร์เรย์
// $I_start เริ่มดึงข้อมูลบันทึก - 1 จะดึงข้อมูลบันทึกทั้งหมดของแบบสอบถาม
// $I_end สิ้นสุดการดึงข้อมูลบันทึก
//ค่าที่ส่งคืน: อาร์เรย์สองมิติ ($A_rs)
// หมายเหตุ: ค่าของฟิลด์ที่เกี่ยวข้องสามารถเข้าถึงได้ผ่านตัวเลข 0,1,2....; หรือค่าของฟิลด์ที่เกี่ยวข้องสามารถเข้าถึงได้โดยการสอบถามชื่อฟิลด์
// ตัวอย่างเช่น ฟิลด์ NAME ของบันทึกแรกสามารถเข้าถึงได้ผ่าน $A_rs[0][0] หรือ $A_rs[0]['NAME'] หรือ $A_rs[0]['name']
// $I_start, $I_end เป็นพารามิเตอร์ที่ใช้กับเพจ
//------------------------------------------------ -----------------------------------------------
ฟังก์ชั่น db_query($C_sql,$A_define="",$I_start=-1,$I_end=-1)
-
if (!$C_sql){AlertExit("พารามิเตอร์ที่ไม่สมบูรณ์!");}//ตรวจสอบพารามิเตอร์
//การตรวจจับการเชื่อมต่อ
if ($this->I_linkID == 0){AlertExit('Database link failed, please contact the DBA!');}
// ตรวจจับรูปแบบ
$this -> I_stmtID = OCIParse($this -> I_linkID,$C_sql);
if (!$this -> I_stmtID){AlertExit('SQL format error! Please contact the programmer');}
//หากไม่ได้ระบุฟิลด์ที่ถูกผูกไว้ ให้รับจากคำสั่ง SQL
ถ้า($A_define=="")
-
$A_Cur = explode("select",$C_sql);
$A_Cur = ระเบิด("จาก",$A_Cur[1]);
$A_define = ระเบิด(",",$A_Cur[0]);
-
//ผูกเขตข้อมูลตารางฐานข้อมูล
if(gettype($A_define) == "array") //คอลัมน์แบบสอบถามเป็นอาร์เรย์
-
สำหรับ($i=0;$i<count($A_define);$i++)
-
$A_define_up[$i] = trim(strtoupper($A_define[$i])); // ใช้ตัวพิมพ์ใหญ่และลบช่องว่าง
-
สำหรับ($i=0;$i<นับ($A_define_up);$i++)
-
OCIDefineByName($this -> I_stmtID,"$A_define_up[$i]",&$$A_define[$i]); //ผูกมัด
-
-
elseif(trim($A_define) <> "") //มีเพียงคอลัมน์เดียวเท่านั้น
-
$A_define_up = ตัด(strtoupper($A_define));
OCIDefineByName($this -> I_stmtID,"$A_define_up",&$$A_define);
}
//ดำเนินการคำสั่ง SQL ที่ถูกผูกไว้
if(!OCIExecute($this -> I_stmtID))
-
echo "<font color=red><b>ข้อผิดพลาดในการดำเนินการ:</b></font>ข้อผิดพลาด SQL:<font color=red>$C_sql</font><br>";
กลับเท็จ;
-
$lower = 0; //ส่งคืนตัวแปรควบคุมตัวห้อยมิติแรกของอาร์เรย์สองมิติ
$cnt = 0; //เริ่มดึงข้อมูลตัวระบุ
//รับบันทึก
ในขณะที่ (OCIFetchInto($this -> I_stmtID,&$cur,OCI_ASSOC))
-
//รับบันทึกทั้งหมดที่สอบถาม
ถ้า ($I_start == -1)
-
if (gettype($A_define) == "array") //คอลัมน์แบบสอบถามเป็นอาร์เรย์
-
สำหรับ ($i=0;$i<count($A_define);$i++)
-
ถ้า ($cur[$A_define_up[$i]] <> $$A_define[$i])
-
$$A_define[$i] = $cur[$A_define_up[$i]];
-
$A_rs[$lower][$i] = $$A_define[$i]; //เข้าถึงด้วยตัวเลข
$A_rs[$lower][$A_define[$i]] = $$A_define[$i]; //ใช้การเข้าถึงที่น้อยลง
$A_rs[$lower][$A_define_up[$i]] = $$A_define[$i]; //เข้าถึงด้วยตัวพิมพ์ใหญ่
-
-
elseif (trim($A_define) <> "") //มีเพียงคอลัมน์เดียวเท่านั้น
-
ถ้า ($cur[$A_define_up] <> $$A_define)
-
$$A_define = $cur[$A_define_up];
-
$A_rs[$lower][0] = $$A_define; //เข้าถึงด้วยตัวเลข
$A_rs[$lower][$A_define] = $$A_define; //เข้าถึงด้วยตัวพิมพ์เล็ก
$A_rs[$lower][$A_define_up] = $$A_define; //ใช้การเข้าถึงที่มากขึ้น
-
$lower++; //ตัวห้อยบวกหนึ่ง
-
//ดึงข้อมูลบันทึกที่ระบุ (ใช้กับเพจจิ้ง)
ถ้า ($I_start <> -1)
-
ถ้า ($cnt >= $I_start)
-
$cnt++;
ถ้า ($I_end - $I_start <> 0)
-
$I_end--;
ถ้า (gettype($A_define) == "อาร์เรย์")
-
สำหรับ($i=0;$i<นับ($A_define_up);$i++)
-
ถ้า ($cur[$A_define_up[$i]] <> $$A_define[$i])
-
$$A_define[$i] = $cur[$A_define_up[$i]];
-
$A_rs[$lower][$i] = $$A_define[$i]; //เข้าถึงด้วยตัวเลข
$A_rs[$lower][$A_define[$i]] = $$A_define[$i]; //ใช้การเข้าถึงที่น้อยลง
$A_rs[$lower][$A_define_up[$i]] = $$A_define[$i]; //เข้าถึงด้วยตัวพิมพ์ใหญ่
-
}elseif(ตัดแต่ง($A_define) <> "")
-
ถ้า ($cur[$A_define_up] <> $$A_define)
-
$$A_define = $cur[$A_define_up];
-
$A_rs[$lower][0] = $$A_define; //เข้าถึงด้วยตัวเลข
$A_rs[$lower][$A_define] = $$A_define; //ใช้การเข้าถึงที่น้อยลง
$A_rs[$lower][$A_define_up] = $$A_define; //เข้าถึงด้วยตัวพิมพ์ใหญ่
-
$ต่ำกว่า++;
}อื่น
-
break; //ถ้า $I_end-$I_start=0 หมายความว่าดึงข้อมูลบันทึกและกระโดดออกจากลูป while
-
}อื่น
-
$cnt++; //ถ้า $cnt<$I_start,$cnt++
-
-
} //สิ้นสุดขณะนั้น
//ปล่อยหมายเลขอ้างอิงและส่งกลับข้อมูลแบบสอบถาม (อาร์เรย์สองมิติ)
OCIFreestatement($สิ่งนี้ -> I_stmtID);
ส่งคืน $A_rs;
} //สิ้นสุดฟังก์ชัน
//------------------------------------------------ -----------------------------------------------
//------ -------------------------------------------------- -------------------------------------------------- ----------------------------------
// ชื่อฟังก์ชัน: db_change($C_sql,$A_bind)
// ฟังก์ชั่น: การเปลี่ยนแปลงฐานข้อมูล
// พารามิเตอร์: คำสั่ง $C_sql sql
// $A_bind ฟิลด์ที่จะผูก ประเภทอาร์เรย์
//ค่าที่ส่งคืน: ค่าบูลีน
// หมายเหตุ: แทรก ลบ อัปเดตเป็นเรื่องปกติ
//------------------------------------------------ -----------------------------------------------
ฟังก์ชั่น db_change($C_sql,$A_bind="")
-
if (!$C_sql){AlertExit("พารามิเตอร์ที่ไม่สมบูรณ์!");}//ตรวจสอบพารามิเตอร์
//การตรวจจับการเชื่อมต่อ
if($this -> I_linkID==""){ AlertExit("ฐานข้อมูลของเราไม่ว่าง โปรดเชื่อมต่ออีกครั้งในภายหลัง!");}
// ตรวจจับรูปแบบ
$this -> I_stmtID = OCIParse($this -> I_linkID,$C_sql);
if (!$this -> I_stmtID){AlertExit('SQL format error! Please contact the programmer');}
//ผูก
ถ้า(gettype($A_bind) == "อาร์เรย์")
-
สำหรับ($i=0;$i<นับ($A_bind);$i++)
-
ทั่วโลก $$A_bind[$i];
$$A_bind[$i] = StripSlashes($$A_bind[$i]); // ลบอักขระแบ็กสแลช
$$A_bind[$i] = str_replace("<?","< ?",$$A_bind[$i]); //กรองแท็ก PHP ออก
-
สำหรับ($i=0;$i<นับ($A_bind);$i++){
OCIBindByName($this -> I_stmtID, ":$A_bind[$i]", &$$A_bind[$i], -1); //Bind
-
-
elseif(trim($A_bind) <> "") //ไม่ใช่อาร์เรย์ แต่เป็นอักขระ
-
ทั่วโลก $$A_bind;
$$A_bind = StripSlashes($$A_bind);
$$A_bind = str_replace("<?","< ?",$$A_bind); //กรองแท็ก PHP ออก
OCIBindByName($this -> I_stmtID, ":$arrBind", &$$A_bind, -1);
-
//ดำเนินการและตรวจสอบว่าสำเร็จหรือไม่
if(!OCIExecute($this -> I_stmtID,OCI_DEFAULT))
-
echo "<font color=red><b>ข้อผิดพลาดในการดำเนินการ:</b></font>ข้อผิดพลาด SQL:<font color=red>$C_sql</font><br>";
กลับเท็จ;
-
/*//ส่งคืนจำนวนแถวที่ได้รับผลกระทบ
$I_changenum ทั่วโลก;
$I_changenum = OCINumrows($this -> I_stmtID);*/
//ปล่อยที่จับและส่งกลับค่า
OCIFreeStatement($นี้ -> I_stmtID);
กลับเป็นจริง;
-
//------------------------------------------------ -----------------------------------------------
//------ -------------------------------------------------- -------------------------------------------------- ----------------------------------
// ชื่อฟังก์ชัน: db_delete($C_sql)
// ฟังก์ชั่น: ลบ
// พารามิเตอร์: คำสั่ง C_sql sql
//ค่าที่ส่งคืน: ค่าบูลีน
// หมายเหตุ: ฟังก์ชั่นนี้มีไว้สำหรับการใช้งานโดยสัญชาตญาณเท่านั้น โดยพื้นฐานแล้วเรียกว่า db_change()
//------------------------------------------------ -----------------------------------------------
ฟังก์ชั่น db_delete($C_sql)
-
ส่งคืน $this -> db_change($C_sql);
-
//------------------------------------------------ -----------------------------------------------
//------ -------------------------------------------------- -------------------------------------------------- ----------------------------------
// ชื่อฟังก์ชัน: db_insert($C_sql,A_bind)
// ฟังก์ชั่น: ใส่
// พารามิเตอร์: คำสั่ง C_sql sql
// A_bind มีผลผูกพัน
//ค่าที่ส่งคืน: ค่าบูลีน
// หมายเหตุ: ฟังก์ชั่นนี้มีไว้สำหรับการใช้งานโดยสัญชาตญาณเท่านั้น โดยพื้นฐานแล้วเรียกว่า db_change()
//------------------------------------------------ -----------------------------------------------
ฟังก์ชั่น db_insert($C_sql,$A_bind="")
-
ส่งคืน $this -> db_change($C_sql,$A_bind);
-
//------------------------------------------------ -----------------------------------------------
//------ -------------------------------------------------- -------------------------------------------------- ----------------------------------
// ชื่อฟังก์ชัน: db_update($C_sql,A_bind)
// ฟังก์ชั่น: อัปเดต
// พารามิเตอร์: คำสั่ง C_sql sql
// A_bind มีผลผูกพัน
//ค่าที่ส่งคืน: ค่าบูลีน
// หมายเหตุ: ฟังก์ชั่นนี้มีไว้สำหรับการใช้งานโดยสัญชาตญาณเท่านั้น โดยพื้นฐานแล้วเรียกว่า db_change()
//------------------------------------------------ -----------------------------------------------
ฟังก์ชั่น db_update($C_sql,$A_bind="")
-
ส่งคืน $this -> db_change($C_sql,$A_bind);
-
//------------------------------------------------ -----------------------------------------------
//------ -------------------------------------------------- -------------------------------------------------- ----------------------------------
// ชื่อฟังก์ชัน: db_commit()
// ฟังก์ชั่น: การส่งธุรกรรม
// พารามิเตอร์: ไม่มี
//ค่าที่ส่งคืน: ค่าบูลีน
// หมายเหตุ: ไม่มี
//------------------------------------------------ -----------------------------------------------
ฟังก์ชั่น db_commit()
-
กลับ (OCICommit($this->I_linkID));
-
//------------------------------------------------ -----------------------------------------------
//------ -------------------------------------------------- -------------------------------------------------- ----------------------------------
// ชื่อฟังก์ชัน: db_rollback()
// ฟังก์ชั่น: การย้อนกลับธุรกรรม
// พารามิเตอร์: ไม่มี
//ค่าที่ส่งคืน: ค่าบูลีน
// หมายเหตุ: ไม่มี
//------------------------------------------------ -----------------------------------------------
ฟังก์ชั่น db_rollback()
-
กลับ (OCIRollback($this->I_linkID));
-
//------------------------------------------------ -----------------------------------------------
//------------------------------------------------ -----------------------------------------------
// ชื่อฟังก์ชัน: db_logoff()
// ฟังก์ชั่น: ตัดการเชื่อมต่อฐานข้อมูล
// พารามิเตอร์: ไม่มี
//ค่าที่ส่งคืน: ค่าบูลีน
// หมายเหตุ: ไม่มี
//------------------------------------------------ -----------------------------------------------
ฟังก์ชั่น db_logoff()
-
กลับ (OCILogoff($this->I_linkID));
-
//------------------------------------------------ -----------------------------------------------
//------------------------------------------------ -----------------------------------------------
-
-