السبت، 1 يونيو 2013

شرح MySQLi من الصفر إلى الإحتراف - دورة كاملة


ستكون تلك التدوينة بمثابة مرجع متكامل لكل من يريد ترك MySQL واستخدام MySQLi، وللعلم تلك التدوينة سآخذها من دورة MySQLi التى قمت بتأليفها على منتدى روابط في بي، لكن مع بعض التعديلات طبعًا، وستنقسم تلك التدوينة إلى ستة أجزاء، هي عبارة عن 6 دروس للدورة، أترككم مع الدروس.

 الدرس الأول
بدايةً ما هي MySQLi: فى الآونة الأخيرة حوّل العديد من المبرمجين حول العالم من طريقة البرمجة العادية إلى طريقة OOP ، وهى طريقة سهلة وذكية للبرمجة، ولموازاة هذا التطوّر تم إصدار MySQLi Extension ، وهي إختصار MySQL Improved، وهي تطوير ذكي لـMySQL Extension، وفى الإصدار PHP 5.5 سيتم إلغاء الدعم من MySQL ، وسيتم دعم MySQLi؛ بذلك اتجه الآلاف من المبرمجين إلى تعلم MySQLi.
يعتقد الكثير من المبرمجين المبتدأين أن المواقع المبرمجة بإستخدام MySQL سيتم إيقافها أو قد يحدث مشاكل لديها مع قواعد البيانات، لكن هذا الكلام ليس له أى أساس من الصحة، من يفهم البرمجة الصحيحة يعرف هذه الحقيقة.
سنعتمد فى دورتنا تلك على طريقة OOP، وسأفترض أنك على علم بـMySQL من قبل.
- الإتصال بقاعدة البيانات.
قديمًا فى MySQL كنت تضطر إلى إستعمال دالتين للإتصال بقاعدة البيانات، الأولى هي للإتصال بالسيرفر أولاً، ثم الثانية للإتصال بقاعدة البيانات المُرادة، كما فى هذا المثال:
$connect_to_server = mysql_connect("localhost","root",123);
$connect_to_db = mysql_select_db($connect_to_server,"my_database");
أما الآن فى MySQLi تعتمد الفكرة على إنشاء كائن تضع فيه بيانات الإتصال بالسيرفر وقاعدة البيانات، ليمثل هذا قاعدة البيانات، ثم بعد ذلك تقوم بإستخدام الـMethods الخاصة بهذا الكائن فى التعامل مع قاعدة البيانات طوال البرنامج.
وللقيام بذلك نقوم بالإعلان عن متغير، ثم نقوم بإنشائه على اساس انه كائن مشتق من كلاس mysqli كما في المثال التالي:
$db = new mysqli();
لكن كيف سنقوم بإدخال بيانات الإتصال بقاعدة البيانات؟
سنقوم بوضعها بين قولي كلاس mysqli ، حيث سنقوم بإدخال السيرفر، ثم اليوزرنيم ، قم الباسوورد، ثم أخيرًا اسم قاعدة البيانات المرادة.
$db = new mysqli("localhost","root",123,"my_database");
والآن اصبح لدينا متغير أو بمعني أصح كائن يمثل قاعدة البيانات، ثم سنقوم بعمل إستعلامات والأوامر على هذا الكائن ؛ لأن هذا الكائن ببساطة هو الذي يمثل قاعدة البيانات لدينا.
- التحقق من الإتصال.
نستطيع التحقق من وجود Error فى الإتصال عبر connect_error ، ثم بعد ذلك نقوم بإيقاف البرنامج عبر الدالة die ثم عرض رسالة الخطأ ، ونقوم بالوصول إلى connect_error عن طريق وضع اسم الكائن ثم هذا الرمز:
->
ثم كلمة connect_error كما فى المثال التالي:
$db = new mysqli("localhost","root",123,"my_database");
if($db->connect_error){
die($db->connect_error);
}

الدرس الثاني
سنتعرف فى هذا الدرس على كيفية إنشاء إستعلام جديد فى MySQLi، والطريقة تعتبر فى قمة السهولة، وسترون ذلك !
كل ما فى الموضوع أنك ستقوم بإنشاء متغير فى البداية لتسجيل الإستعلام فيه، وبداخل هذا المتغير ستقوم بوضع كائن قاعدة البيانات ثم علامة:
->
ثم كلمة query ، ثم تقوم بفتح قوسين بينهما الاستعلام الذي تريده.
$query = $db->query("SELECT * ...");

الدرس الثالث
سندرس فى هذا الدرس كيفية إستخراج البيانات من استعلامات SQL فى حالة إستخدام استعلام SELECT ؛ لإستخراج البيانات إلى مصفوفات بأنواعه المختلفة.
إذا قمنا بإنشاء استعلام SQL عبر كائن قاعدة البينات و الـQuery Method وقمنا بتخزينه فى متغير مثلاً ولنسميه $result ، إذًا كيف نقوم بإستخراج البيانات الموجودة فى result لوضعها فى مصفوفة للبدء فى إستخدامها؟
نستطيع ذلك عبر كتابة اسم متغير result ثم السهم:
->
ثم كلمة fetch_array، ثم ما بين قوسين نقوم بوضع نوع المصفوفة التى نريدها.
- أنواع المصفوفات:
1- مصفوفة رقمية.
التى تعتمد على أرقام الأعمدة ابتدائًا من 0 ، نقوم بتحديدها عبر كتابة MYSQLI_NUM بين القوسين.
مثال:
<?php
$result = $db->query("select * from tbl_name");
$row = $result->fetch_array(MYSQLI_NUM);
echo $row['0'];
echo $row['1'];
?>
2- مصفوفة ASSOCIATIVE.
التي تعتمد على اسماء الأعمدة، نقوم بتحديدها عبر كتابة MYSQLI_ASSOC بين القوسين.
مثال:
<?php
$row = $result->fetch_array(MYSQLI_ASSOC);
echo $row['username'];
echo $row['password'];
?>
3- مصفوفة كلاهما.
والتي من الممكن استخدام فيها أرقام الأعمدة أو اسماء الأعمدة، ويتم تحديدها عبر كتابة MYSQLI_BOTH بين القوسين.
مثال:
<?php
$row = $result->fetch_array(MYSQLI_BOTH);
echo $row['0'];
echo $row['username'];
?>
ملاحظة: نحن لا نقوم بوضع ما بين القوسين فى علامات الإقتباس ! فنحن نضع مثلاً MYSQLI_NUM وليس "MYSQLI_NUM".

الدرس الرابع
فى هذا الدرس إن شاء الله سنتعرف على طريقة جديدة لإستخراج البيانات من قاعدة البيانات لكن هذه المرة على شكل كائن Object.
الفكرة هي عبر method تسمي fetch_object، وسيتضح لك كيفية إستخدامه عبر المثال التالي:
<?php
$sql = $db->query("SELECT * FROM table");
$row = $sql->fetch_object();
?>
الآن قمنا بتخزين المخرجات من استعلام SELECT على شكل كائن اسمه row، والآن كل تعاملنا سيكون مع اسماء الأعمدة، ولكن للوصول إلى العمود نكتب اسم العمود بعد علامة:
->
فمثلاً إذا كنا نريد الوصول إلى قيمة العمود الذي يسمّى id يمكننا طباعته عبر المثال التالي:
<?php
echo $row->id;
?>

الدرس الخامس
فى هذا الدرس سنتعرف على كيفية الحصول على عدد الحقول المستخرجة، وهي من اهم العمليات التى يقوم بها المبرمج.
يمكنك القيام بتلك العملية عبر method تسمّى num_rows.
مثال:
<?php
$result = $db->query("select * from tbl_name");
$num = $result->num_rows;
?>
عند طباعة المتغير num ألآن سيطبع لك عدد الحقول المستخرجة من الاستعلام.

الدرس السادس
سنتعرف فى هذا الدرس على آخر جزئيتين فى MySQLi، ألا وهم الأخطاء وإغلاق الإتصال.
- الأخطاء.
قد تحتاج كثيرًا إلى إظهار الأخطاء لمساعدتك فى حلها عبر معرفة مصدر المشكلة، يمكنك طباعة الأخطاء عبر method يسمّى error ، يتم وضع بعد اسم كائن قاعدة البيانات.
مثال:
<?php
echo $db->error();
?>
- إغلاق الإتصال.
إغلاق الإتصال بقاعدة البيانات عند الإنتهاء من استخدامها يعتبر من أهم أساسيات الحماية ، ولذلك ستحتاج إلى إغلاق الإتصال بقاعدة البيانات وذلك عبر method تسمّى close.
مثال:
<?php
$db->close();
?>

ملاحظة: لم أقم بشرح استعلامات SQL ؛ لأنك من المفترض أن تكون دارسًا لها قبل أن تبدأ بإستخدام MySQLi او حتى MySQL مع PHP أو أى لغة برمجة أخرى.
المزيد من المواضيع:

0 التعليقات:

إرسال تعليق