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

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

دروس PHP متقدمة

PHP & MySQL

دليل PHP

MySQL WHERE

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

فرز السجلات

WHEREالجملة تستخدم فقط لاستخراج السجلات التي ت satisfy الشروط المحددة.

قواعد النحو الأساسية لجملة WHERE يمكن تقديمها بالشكل التالي:

SELECT column_name(s) FROM table_name WHERE column_name operator value

دعونا نستخدم جملة WHERE في SELECT لتنفيذ استعلام SQL، ثم نقوم بتنفيذ الاستعلام عبر دالة mysqli_query() في PHP للحصول على بيانات المرشحة.
الافتراض أن قاعدة بيانات demo تحتوي على جدول 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表中读取 first_name ='john' 的所有行:

示例:面向过程方式

<?php
/*尝试MySQL服务器连接。值象你正在运行MySQL。
有默认设置的服务器(未有密码的用户“root”)€*/
$link = mysqli_connect("localhost", "root", "", "demo");
 
//查询连接
if($link === false){
    die(“错误:无法连接。“ . mysqli_connect_error());
}
 
//حاول تنفيذ الاستعلام
$sql = "SELECT * FROM persons WHERE first_name='john'";
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);
    } else{
        echo "لا يمكن العثور على سجلات تتطابق مع استعلامك.";
    }
} else{
    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 WHERE first_name='john'";
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();
    } else{
        echo "لا يمكن العثور على سجلات تتطابق مع استعلامك.";
    }
} else{
    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 WHERE first_name='john'";  
    $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);
    } else{
        echo "لا يمكن العثور على سجلات تتطابق مع استعلامك.";
    }
} catch(PDOException $e){
    die("خطأ: لا يمكن تنفيذ $sql. " . $e->getMessage());
}
 
//إغلاق الاتصال
unset($pdo);
?>

بعد الفلترة، النتائج ستكون كما يلي:

+----+------------+-----------+---------------------+
| id | first_name | last_name | email               |
+----+------------+-----------+---------------------+
|  2 | John       | Rambo     | [email protected]  |
|  4 | John       | Carter    | [email protected] |
+----+------------+-----------+---------------------+