شرح تحديد البيانات في MySQL

الادارة كريم

مشرف سابق
مجموعة الاعضاء

نستخدم جملة SELECT عند بناء جملة SQL لتحديد البيانات من جدول او عدة جداول لعرضها.
نستطيع تحديد مسميات الأعمدة Columns المراد عرض بياناتها مثال:
SELECT column_name(s) FROM table_name أو نستطيع تحديد جميع الأعمدة لعرض بياناتهم باستخدام علامة النجمة * مثال:
SELECT * FROM table_name يجب ان تكون لديك معرفة في بناء جمل SQL ؛ لتستطيع تنفيذ مختلف العمليات على قواعد البيانات ، حيث انه طريقة تنفيذ هذه الجمل هي واحدة في PHP ، تختلف النتيجة باختلاف الجملة المنفذة فقط.
تحديد البيانات:
في هذه الأمثلة سوف نقوم بتحديد كل من id و name و email من الجدول users وعرضها بالمتصفح.
مثال على MySQLi Object-Oriented:
<?php $servername = "localhost"; $username = "root"; $password = "root"; $dbname = "new-DB"; // إجراء الإتصال $conn = new mysqli($servername, $username, $password, $dbname); // التحقق من الإتصال if ($conn->connect_error) { die("فشل الإتصال: " . $conn->connect_error); } // لتحديد البيانات SQL بناء جملة $sql = "SELECT id, name, email FROM users"; // تنفيذ الإستعلام $result = $conn->query($sql); // التحقق من عدد النتائج if ($result->num_rows > 0) { // نقوم بعرض البيانات للمتصفح while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["name"]. " " . $row["email"]. "<br>"; } } else { echo "0 results"; } // إغلاق الإتصال $conn->close(); تفصيل عمل الأكواد :
بعد عملية الإتصال بقاعدة البيانات بنجاح ، قمنا ببناء جملة SQL لتحديد كل من id و name و email من الجدول users ، ثم بعدها قمنا بتنفيذ هذه الجملة بواسطة الدالة conn->query$ ، وحفظ النتيجة داخل المتغير result$.
قمنا بالتحقق من عدد النتائج المخزنة في المتغير result$ باستخدام result->num_rows$ ، بداخل الدالة الشرطية if فاذا كان عدد النتائج أكثر من صفر نقوم بعرض هذه النتائج باستخدام حلقة التكرار while loop ، او عرض رسالة بانه لاتوجد نتائج لعرضها.
اذا كان الناتج اكبر من صفر فإننا نقوم بتخزين جميع النتائج على شكل مصفوفة من النوع associative array باستخدام result->fetch_assoc$ في المتغير row$ ، و باستخدام حلقة التكرار while نقوم بالمرور على البيانات المخزنة وعرضها بالمتصفح.
عند عمل الكود بالمتصفح بنجاح سيكون الناتج كالتالي:
select.png.1a4d8907da61d51fa3c313045100e418.png
مثال على MySQLi Procedural:
<?php $servername = "localhost"; $username = "root"; $password = "root"; $dbname = "new-DB"; // إجراء الإتصال $conn = mysqli_connect($servername, $username, $password, $dbname); // التحقق من الإتصال if (!$conn) { die("فشل الإتصال: " . mysqli_connect_error()); } // لتحديد البيانات SQL بناء جملة $sql = "SELECT id, name, email FROM users"; // تنفيذ الإستعلام $result = mysqli_query($conn, $sql); // التحقق من عدد النتائج if (mysqli_num_rows($result) > 0) { // نقوم بعرض البيانات للمتصفح while($row = mysqli_fetch_assoc($result)) { echo "id: " . $row["id"]. " - Name: " . $row["name"]. " " . $row["email"]. "<br>"; } } else { echo "0 results"; } // إغلاق الإتصال mysqli_close($conn); شبيه بطريقة عمل المثال السابق الفرق اننا نستخدم الدوال مباشرة بدل الكلاس.
عند عمل الكود بالمتصفح بنجاح سيكون الناتج كالتالي:
select.png.1a4d8907da61d51fa3c313045100e418.png
مثال على PDO:
<?php $servername = "localhost"; $username = "root"; $password = "root"; $dbname = "new-DB"; try { // إجراء الإتصال $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); // تعديل نوع معالج الأخطاء $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // لتحديد البيانات SQL بناء جملة $stmt = $conn->prepare("SELECT id, name, email FROM users"); // تنفيذ الإستعلام $stmt->execute(); // تغير نوع المصفوفة للتعامل معها بسهولة $stmt->setFetchMode(PDO::FETCH_ASSOC); // نقوم بعرض البيانات للمتصفح foreach($stmt->fetchAll() as $key => $value) { echo "id: " . $value["id"]. " - Name: " . $value["name"]. " " . $value["email"]. "<br>"; } } catch(PDOException $e) { echo $sql . "<br>" . $e->getMessage(); } // إغلاق الإتصال $conn = null; لاحظ: في هذا المثال بعد اجراء الإتصال بقاعدة البيانات بنجاح وتخزينه في المتغير conn$ ، قمنا ببناء جملة SQL وتجهيزها وتخزينها بالمتغير stmt$ ، ثم استخدمنا stmt->execute$ لتنفيذ عملية الإستعلام بقاعدة البيانات بدلا من استخدام conn->exec$ ، بعدها قمنا بتغير نوع البيانات الذي نرغب بالتعامل معه الى مصفوفة من نوع associative array بواسطة stmt->setFetchMode$ فهي احد خصائص PDO ، ثم استخدمنا حلقة foreach للمرور على البيانات وعرضها بالمتصفح.
يمكنك معرفة المزيد عن حلقات التكرار وطريقة عملها بواسطة زيارة هذا الدرس.
اضغط هنا
عند عمل الكود بالمتصفح بنجاح سيكون الناتج كالتالي:
select.png.1a4d8907da61d51fa3c313045100e418.png
 

أعلى