<؟
//[تحذير]: يرجى عدم التعديل بدون إذن
//---------------------------------------------------------------- ------------------------------------------
//---------------------------------------------------------------- ------------------------------------------
//
// [اسم الملف]: c_ora_db.inc
// [الوظيفة]: فئة الوظيفة العامة لأوراكل
// [المؤلف]: تيان هوي
//
// [تاريخ آخر تعديل]: 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);
إذا ($this->I_linkID == 0){AlertExit('فشل ارتباط قاعدة البيانات، يرجى الاتصال بمسؤول قواعد البيانات!');}
إرجاع $this->I_linkID;
}
//---------------------------------------------------------------- ------------------------------------------
//---------------------------------------------------------------- ------------------------------------------
// اسم الوظيفة: db_query($C_sql,$A_define="",$I_start=-1,$I_end=-1)
// الوظيفة: حدد
// المعلمة: بيان SQL $C_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("المعلمات غير مكتملة!");}//التحقق من المعلمات
// كشف الاتصال
إذا ($this->I_linkID == 0){AlertExit('فشل ارتباط قاعدة البيانات، يرجى الاتصال بمسؤول قواعد البيانات!');}
// الكشف عن التنسيق
$this -> I_stmtID = OCIParse($this -> I_linkID,$C_sql);
إذا (!$this -> I_stmtID){AlertExit('خطأ في تنسيق SQL! يرجى الاتصال بالمبرمج');}
// إذا لم يتم تحديد الحقل المنضم، فاحصل عليه من عبارة SQL
إذا($A_define=="")
{
$A_Cur = Explosion("select",$C_sql);
$A_Cur = Explosion("from",$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])); // تكبير وإزالة المسافات
}
for($i=0;$i<count($A_define_up);$i++)
{
OCIDefineByName($this -> I_stmtID,"$A_define_up[$i]",&$$A_define[$i]); //Binding
}
}
elseif(trim($A_define) <> "") // يوجد عمود استعلام واحد فقط
{
$A_define_up = Trim(strtoupper($A_define));
OCIDefineByName($this -> I_stmtID,"$A_define_up",&$$A_define);
}
// تنفيذ عبارة SQL المرتبطة
إذا (!OCIEExecute($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) == "صفيف")
{
for($i=0;$i<count($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(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; // الوصول بأحرف كبيرة
}
$ أقل++;
}آخر
{
استراحة // إذا كان $I_end-$I_start=0، فهذا يعني جلب السجل والقفز من الحلقة أثناء.
}
}آخر
{
$cnt++; //إذا كان $cnt<$I_start,$cnt++;
}
}
} // نهاية الوقت
// حرر المقبض وأعد بيانات الاستعلام (مصفوفة ثنائية الأبعاد)
OCIFreestatement($this -> I_stmtID);
إرجاع $A_rs؛
} // نهاية الوظيفة
//---------------------------------------------------------------- ------------------------------------------
//----- -------------------------------------------------- ----------------------------------
// اسم الوظيفة: db_change($C_sql,$A_bind)
// الوظيفة: تغيير ديسيبل
// المعلمة: بيان SQL $C_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);
إذا (!$this -> I_stmtID){AlertExit('خطأ في تنسيق SQL! يرجى الاتصال بالمبرمج');}
//ربط
إذا (gettype($A_bind) == "صفيف")
{
ل($i=0;$i<count($A_bind);$i++)
{
عالمي $$A_bind[$i];
$$A_bind[$i] = StripSlashes($$A_bind[$i]); // إزالة أحرف الخط المائل العكسي
$$A_bind[$i] = str_replace("<?"،< ؟",$$A_bind[$i]); // تصفية علامات PHP
}
for($i=0;$i<count($A_bind);$i++){
OCIBindByName($this -> I_stmtID, ":$A_bind[$i]", &$$A_bind[$i], -1);
}
}
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);
}
// نفذ وتحقق مما إذا كان ناجحًا
إذا (!OCIEExecute($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($this -> 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()
{
return (OCICommit($this->I_linkID));
}
//---------------------------------------------------------------- ------------------------------------------
//----- -------------------------------------------------- ----------------------------------
// اسم الوظيفة: db_rollback()
// الوظيفة: التراجع عن المعاملة
// المعلمات: لا شيء
// قيمة الإرجاع: قيمة منطقية
// ملاحظات: لا شيء
//---------------------------------------------------------------- ------------------------------------------
الدالة db_rollback()
{
return (OCIRollback($this->I_linkID));
}
//---------------------------------------------------------------- ------------------------------------------
//---------------------------------------------------------------- ------------------------------------------
// اسم الوظيفة: db_logoff()
// الوظيفة: قطع اتصال قاعدة البيانات
// المعلمات: لا شيء
// قيمة الإرجاع: قيمة منطقية
// ملاحظات: لا شيء
//---------------------------------------------------------------- ------------------------------------------
الدالة db_logoff()
{
return (OCILogoff($this->I_linkID));
}
//---------------------------------------------------------------- ------------------------------------------
//---------------------------------------------------------------- ------------------------------------------
}
?>