مرحبا بالجميع! بالتأكيد كل واحد من أولئك الذين يكتبون كثيرًا وباستمرار في
PHP قد واجهوا مسألة تحسين وتبسيط الاستعلامات إلى
قواعد بيانات MySQL . شخص ما كتب بالفعل فصول / إجراءات مناسبة لأنفسهم ، وجد شخص ما شيئًا في المساحات المفتوحة للشبكة.
نظرًا لأن نصوصي في
PHP بدأت في الاختزال أكثر فأكثر إلى مهمة واحدة - جلب من قاعدة بيانات وتمرير هذه البيانات إلى نصوص Java من جانب العميل ، فقد جعلت الأمر أسهل بالنسبة لي من خلال إنشاء فصل قاعدة بيانات مناسب (بالنسبة لي بالطبع)
MySQLسأقوم بالحجز على
الفور - فئة
mqsli المدمجة مريحة وعملية تمامًا ، ولكن في مواجهة نفس الأسئلة
كل يوم ، سيكون من الغريب عدم تخفيف مصيرك قليلاً.
يتم تقديم فئة
exDBase إلى انتباهك ، فهي في الأساس غلاف لفئة
mysqli . قم بالحجز على الفور - أنا مبرمج مبتدئ ، وأنا على استعداد لتلقي الكثير من الانتقادات للشفرة المكتوبة في التعليقات أو الرسائل الشخصية. أنا لا أملك RegExp حقًا على سبيل المثال ، الأمر الذي من شأنه أن يبسط الرمز إلى حد كبير ، ربما هناك شكاوى أخرى. ولكن مع ذلك ...
المكتبة بأكملها موجودة في ملف واحد -
exdbase.php . يحتوي هذا الملف على
وصف فئة
exDBase . لبدء العمل ، ما عليك سوى تنزيل الملف ، وتسجيل السطر التالي:
require_once ('exdbase.php')
أولاً ، قم بإنشاء مثيل من الفصل ، إنه بسيط للغاية:
$DB = new exDBase (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); if ($DB->error) echo " : $DB->error";
خاصية
الخطأ $ DB-> سيكون لها دائمًا خطأ العملية الأخيرة (إذا كان هناك خطأ) ، أو ستكون فارغة.
التنسيق مطابق تقريبًا
لاستنساخ فئة
mysqli . بطبيعة الحال ، بدلاً من الثوابت الموضحة في المثال ، تحتاج إلى استبدال القيم الحقيقية للمضيف واسم المستخدم وكلمة المرور واسم قاعدة البيانات.
الآن يمكنك التدرب. لنفترض أن لدينا قاعدة بيانات جاهزة ، ولديها جدول
عملاء يحتوي على حقول:
ID -
رقم فريد ، زيادة تلقائية
NAME - اسم العميل
العمر - عمر العميل
AMOUNT - مبلغ المشتريات
محظور - منطقي ، مؤمن على العميل أو نشط
الإعدادات - المعلمات الشخصية ، نقوم بتخزينها بتنسيق JSON
قاعدة بيانات الاستعلام
دعنا نحصل على جميع الإدخالات من جدول "
العملاء ". هناك طريقة
fetchArray لذلك .
$res = $DB->fetchArray ('clients'); // if ($res) foreach ($res as $client) echo print_r ($client, true); //
وإذا أردنا الحصول على أول سجل للطلب فقط؟ هناك طريقة
fetchFirst لهذا .
$res = $DB->fetchFirst ('clients'); // if ($res) echo print_r ($client, true); //
ولكن ، لا نحتاج إلى الحصول على جميع السجلات من الجدول ، فهناك دائمًا شروط اختيار (حقل WHERE في الأمر SELECT). ماذا نفعل؟ نعم ، بسيط جدا. هذه هي الوسيطة الثانية لطرق fetchArray أو fetchFirst.
لنفترض أننا نريد تحديد جميع العملاء المسمى John. في صفنا ، يمكن القيام بذلك بطريقتين.
الأول هو ببساطة تعيين الشرط بسلسلة من النموذج "NAME = 'John"
$res = $DB->fetchArray ('clients', "NAME = 'John'");
والثاني هو تعيين الشرط في صفيف:
$res = $DB->fetchArray ('clients', array ("NAME" => "John"));
وإذا كان هناك المزيد من الشروط؟ على سبيل المثال ، هل يجب أن يكون العمر 30 عامًا؟ سهل:
$res = $DB->fetchArray ('clients', array ("NAME" = "John", "AGE" => 30));
بهذه الطريقة يمكنك الجمع بين مصطلحات بحث متعددة. لكن المساواة ... وإذا أردنا العثور على جميع العملاء باسم جون الذين تزيد أعمارهم عن 25 عامًا؟ هنا تأتي البادئات الخاصة للإنقاذ:
$res = $DB->fetchArray ('clients', array ("NAME" = "John", ">=AGE" => 25));
بالإضافة إلى "> =" يمكنك استخدام: ">" ، "<" ، "<=" ، "! =" ، "<>" ، "! =". وبالتالي ، يمكنك إنشاء استعلامات بدرجات متفاوتة من التعقيد والحصول دائمًا على الإجابات الصحيحة.
المعلمة الثالثة من طرق استرداد قاعدة البيانات هي حقول الجدول. يمكن تحديدها إما كسلسلة (على سبيل المثال: "NAME، AGE") أو كصفيف: صفيف ("NAME" ، "AGE").
$res = $DB->fetchArray ('clients', array ("NAME" = "John", ">=AGE" => 25), array ("NAME", "AGE"));
المعلمة الرابعة والأخيرة لطرق الجلب fetchArray و fetchFirst هي ترتيب الفرز. يتم تحديده أيضًا إما بسلسلة (النوع: "ID ASC ، NAME DESC") أو صفيف صفيف ("ID" => "ASC" ، "NAME" => "DESC").
$res = $DB->fetchArray ('clients', array ("NAME" = "John", ">=AGE" => 25), array ("NAME", "AGE"), array ("ID" => "ASC", "NAME" => "DESC"));
حسنًا ، تنتهي بالبيانات التي تطلبها - وكيفية تحديد التحديد؟ على سبيل المثال ، هناك حاجة فقط لأول 10 إدخالات؟
يتم ذلك باستخدام طريقة setLimit () ، مثل هذا:
$DB->setLimit (10); $res = $DB->fetchArray ('clients', "NAME = 'John'");
يعمل الأسلوب setLimit () على طلب واحد فقط ، وبعد ذلك تتم إعادة تعيين الحدود.
أدخل بيانات جديدة
هناك طريقة
insert () لكتابة بيانات جديدة.
$id = $DB->insert ('clients', array ("NAME" => 'Peter', "AGE" => 27, "AMOUNT" => 1000.25));
تقوم بإرجاع قيمة مفتاح الزيادة التلقائية الأساسية (إذا تم تحديد واحد في الجدول). في حالتنا ، سيتم إرجاع معرف السجل المدرج.
تحديث البيانات
يتم تحديث البيانات باستخدام طريقة
التحديث () .
$DB->update ('clients', array ("NAME" => 'Peter'), array ("AGE" => 30, "AMOUNT" => 2000.25));
قمنا بتحديث جميع السجلات حيث يكون الاسم (الحقل NAME) هو "Peter". الوسيطة الثانية للأسلوب هي شرط التحديد ، بنفس التنسيق تمامًا مثل WHERE لـ SELECT. حسنًا ، الحجة الثالثة للطريقة هي البيانات نفسها. الآن كل هذه السجلات التي تحمل اسم "بيتر" ستبلغ من العمر 30 عامًا وسيكون المبلغ 2000.25.
حذف البيانات
إذا كنت قد فهمت بالفعل منطق المكتبة ، فستكون الإزالة بسيطة للغاية. تُدعى الطريقة
delete () .
$DB->delete ('clients', array ("NAME" => 'Peter'); // 'Peter' $DB->delete ('clients', array (">AGE" => '20'); // 20.
هذه أول رحلة قصيرة إلى مكتبة exDBase. هناك عدد من الميزات الأخرى الأكثر تقدمًا ، ولكن المزيد عن ذلك في وقت آخر.
تحديث:
يمكنك تنزيل الملف على جيثبكود جيد للجميع!