English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دروس PHP الأساسية

دروس PHP متقدمة

PHP & MySQL

دليل PHP

قراءة البيانات من MySQL

في هذا الدرس، ستتعلم كيفية قراءة السجلات من جدول MySQL باستخدام PHP.

قراءة البيانات من جدول البيانات

حتى الآن، لقد تعلمنا كيفية إنشاء قاعدة بيانات وجداول ووضع البيانات. الآن حان وقت استرجاع البيانات التي تم إدخالها في الدروس السابقة. SQL SELECTالجملة تستخدم لقراءة السجلات من جدول البيانات. لغتها الأساسية كالتالي:

SELECT  column1_name, column2_name, columnN_name  FROM  table_name ;

لنستخدم جملة SELECT لجعل استعلام SQL، بعد ذلك سنقوم بتشغيل هذا الاستعلام من خلال تمريره إلى دالة PHP mysqli_query() لاسترجاع بيانات الجدول.

أنظروا إلىpersonsجدول البيانات يحتوي على السجلات التالية:

+----+------------+-----------+----------------------+
| id | first_name  | last_name | email                |
+----+------------+-----------+----------------------+
| 1  | Peter       | Parker    | [email protected] |
| 2  | John        | Rambo     | [email protected]   |
| 3  | Clark       | Kent      | [email protected]   |
| 4  | John        | Carter    | [email protected]  |
| 5  | Harry       | Potter    | [email protected] |
+----+------------+-----------+----------------------+

في هذا المثال، يختار رمز PHP أدناه جميع البيانات الموجودة في جدول persons (باستخدام رمز النجمة (*) لتعويض اسم الأعمدة لاختيار جميع البيانات في الجدول).

مثال: طريقة عملية

<?php
/* محاولة اتصال بخادم MySQL. افترض أنك تشغل MySQL.
خادم به إعدادات افتراضية (مستخدم بدون كلمة مرور "root") */
$link = mysqli_connect("localhost", "root", "", "demo");
 
//تحقق من الاتصال
if($link === false){
    die("خطأ: لا يمكن الاتصال." . mysqli_connect_error());
}
 
//محاولة تنفيذ استعلام اختياري
$sql = "SELECT * FROM persons";
if($result = mysqli_query($link, $sql)){
    if(mysqli_num_rows($result) > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = mysqli_fetch_array($result)){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //تحرير مجموعة النتائج
        mysqli_free_result($result);
    }
        echo "لا يمكن العثور على سجلات تتطابق مع استعلامك.";
    }
}
    echo "خطأ: لا يمكن تنفيذ $sql." . mysqli_error($link);
}
 
//إغلاق الاتصال
mysqli_close($link);
?>

مثال: طريقة اتجاهية

<?php
/* محاولة اتصال بخادم MySQL. افترض أنك تشغل MySQL.
خادم به إعدادات افتراضية (مستخدم بدون كلمة مرور "root") */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//تحقق من الاتصال
if($mysqli === false){
    die("خطأ: لا يمكن الاتصال." . $mysqli->connect_error);
}
 
//尝试选择查询执行
$sql = "SELECT * FROM persons";
if($result = $mysqli->query($sql)){
    if($result->num_rows > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = $result->fetch_array()){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //إطلاق مجموعة النتائج
        $result->free();
    }
        echo "لا يمكن العثور على سجلات تتطابق مع استعلامك.";
    }
}
    echo "خطأ: لا يمكن تنفيذ $sql." . $mysqli->error;
}
 
//إغلاق الاتصال
$mysqli->close();
?>

مثال: طريقة PDO

<?php
/* محاولة اتصال بخادم MySQL. افترض أنك تشغل MySQL.
خادم به إعدادات افتراضية (مستخدم بدون كلمة مرور "root") */
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //إعداد نمط الأخطاء PDO على استثنائية
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("خطأ: لا يمكن الاتصال." . $e->getMessage());
}
 
//尝试选择查询执行
try{
    $sql = "SELECT * FROM persons";   
    $result = $pdo->query($sql);
    if($result->rowCount() > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = $result->fetch()){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //إطلاق مجموعة النتائج
        unset($result);
    }
        echo "لا يمكن العثور على سجلات تتطابق مع استعلامك.";
    }
} catch(PDOException $e){
    die("خطأ: لا يمكن تنفيذ $sql. " . $e->getMessage());
}
 
//إغلاق الاتصال
unset($pdo);
?>

استخدام الشيفرة (نمط البرنامج)

في المثال السابق، يتم تخزين البيانات التي تعود من دالة mysqli_query() في متغير $result. عند كل استدعاء لدالة mysqli_fetch_array()، تعود الصف التالي في مجموعة النتائج كنص.دورة whileللتحقق من جميع الصفوف في مجموعة النتائج. يمكن الوصول إلى قيمة حقل معين باستخدام متغير $row (مثل $row['id'] أو $row[0],$row['first_name'] أو $row[1],$row['last_name'] أو $row[2],$row['email'] أو $row[3]).

إذا كنت ترغب في استخدامدورة for،يمكن الحصول على قيمة معدير التكرار أو عدد الصفوف المعدة للإرجاع من خلال نقل متغير $result إلى دالة mysqli_num_rows(). يعتمد معدير التكرار على عدد المرات التي يجب تشغيل الدورة.