استفاده از دستور ORDER BY در MySQL در PHP

از ویکی‌کد، دانشنامهٔ برنامه‌نویسی
پرش به ناوبری پرش به جستجو
Main Page Tutorial
Php-menu.png
موارد آموزشی
فرم‌ها در PHP
PHP پیشرفته
شیء گرایی در PHP
پایگاه داده MySQL
۱پایگاه داده MySQL
۲اتصال به MySQL
۳ساخت پایگاه داده
۴ساخت جدول
۵وارد کردن داده
۶دریافت شناسهٔ آخرین سطر
۷وارد کردن چندین داده
۸دستور Prepared
۹انتخاب داده
۱۰دستور Where
۱۱دستور Order By
۱۲حذف داده
۱۳بروزرسانی داده
۱۴محدودسازی داده
XML در PHP
AJAX در PHP
مثال‌های PHP
مرجع PHP


انتخاب و مرتب‌سازی داده‌ها از یک پایگاه داده MySQL

دستور ORDER BY برای مرتب‌سازی مجموعه نتایج به صورت صعودی یا نزولی است.

دستور ORDER BY رکوردها را به صورت صعودی به صورت پیش‌فرض مرتب می‌کند. برای مرتب‌سازی رکوردها به صورت نزولی، از کلمه کلیدی DESC استفاده کنید.[۱]

SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC

برای یادگیری مطالب بیشتر در مورد SQL به آموزش SQL مراجعه کنید.

انتخاب و مرتب سازی داده با MySQLi

مثال زیر ستون‌های id ،firstname و lastname را از جدول MyGuest انتخاب می‌کند. رکوردها بر اساس ستون lastname مرتب خواهند شد:

مثال (شیء گرایی در MySQLi)

 1 <?php
 2 $servername = "localhost";
 3 $username = "username";
 4 $password = "password";
 5 $dbname = "myDB";
 6 
 7 // Create connection
 8 $conn = new mysqli($servername, $username, $password, $dbname);
 9 // Check connection
10 if ($conn->connect_error) {
11     die("Connection failed: " . $conn->connect_error);
12 }
13 
14 $sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname";
15 $result = $conn->query($sql);
16 
17 if ($result->num_rows > 0) {
18     // output data of each row
19     while($row = $result->fetch_assoc()) {
20         echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
21     }
22 } else {
23     echo "0 results";
24 }
25 $conn->close();
26 ?>


مشاهدهٔ نتیجه


توضیح تکه کدهایی از مثال بالا:

ابتدا، ما یک دستور کوئری SQL که ستون‌های id ،firstname و lastname را از جدول MyGuests در صورتی که مقدار ستون lastname برابر با عبارت "Doe" باشد تنظیم می‌کنیم. خط بعدی کد کوئری را اجرا می‌کند و نتیجه را درون یک متغیر به نام $result قرار می‌دهد.

سپس، تابع function num_rows() بررسی می‌کند که آیا بیش از صفر سطر بازگردانده شده‌است.

اگر بیش از صفر سطر بازگردانده شده باشد، تابع fetch_assoc() تمامی نتایج را درون یک آرایه associative قرار می‌دهد که ما می‌توانیم به وسیله حلقه در بین آنها پیمایش کنیم. حلقه while() بین نتایج پیمایش می‌کند و داده‌ها را از ستون‌های id ,firstname و lastname در خروجی چاپ می‌کند.

مثال زیر همانند مثال بالا، به روش رویه ای MySQLi است:

مثال (برنامه‌نویسی رویه ای در MySQLi)

 1 <?php
 2 $servername = "localhost";
 3 $username = "username";
 4 $password = "password";
 5 $dbname = "myDB";
 6 
 7 // Create connection
 8 $conn = mysqli_connect($servername, $username, $password, $dbname);
 9 // Check connection
10 if (!$conn) {
11     die("Connection failed: " . mysqli_connect_error());
12 }
13 
14 $sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname";
15 $result = mysqli_query($conn, $sql);
16 
17 if (mysqli_num_rows($result) > 0) {
18     // output data of each row
19     while($row = mysqli_fetch_assoc($result)) {
20         echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
21     }
22 } else {
23     echo "0 results";
24 }
25 
26 mysqli_close($conn);
27 ?>


مشاهدهٔ نتیجه


شما همچنین می‌توانید نتایج را درون یک جدول HTML قرار دهید:

مثال (شیء گرایی در MySQLi)

 1 <?php
 2 $servername = "localhost";
 3 $username = "username";
 4 $password = "password";
 5 $dbname = "myDB";
 6 
 7 // Create connection
 8 $conn = new mysqli($servername, $username, $password, $dbname);
 9 // Check connection
10 if ($conn->connect_error) {
11     die("Connection failed: " . $conn->connect_error);
12 }
13 
14 $sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname";
15 $result = $conn->query($sql);
16 
17 if ($result->num_rows > 0) {
18     echo "<table><tr><th>ID</th><th>Name</th></tr>";
19     // output data of each row
20     while($row = $result->fetch_assoc()) {
21         echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>";
22     }
23     echo "</table>";
24 } else {
25     echo "0 results";
26 }
27 $conn->close();
28 ?>


مشاهدهٔ نتیجه


انتخاب داده‌ها با PDO (+ دستورات Prepared)

مثال زیر از دستورات prepared استفاده می‌کند.

اینجا ما ستون‌های id ،firstname و lastname را از جدول MyGuests انتخاب می‌کنیم. رکوردها بر اساس ستون lastname مرتب خواهند شد، و درون یک جدول HTML نمایش داده خواهند شد:

مثال (PDO)

 1 <?php
 2 echo "<table style='border: solid 1px black;'>";
 3 echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>";
 4 
 5 class TableRows extends RecursiveIteratorIterator {
 6     function __construct($it) {
 7         parent::__construct($it, self::LEAVES_ONLY);
 8     }
 9 
10     function current() {
11         return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
12     }
13 
14     function beginChildren() {
15         echo "<tr>";
16     }
17 
18     function endChildren() {
19         echo "</tr>" . "\n";
20     }
21 }
22 
23 $servername = "localhost";
24 $username = "username";
25 $password = "password";
26 $dbname = "myDBPDO";
27 
28 try {
29     $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
30     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
31     $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname");
32     $stmt->execute();
33 
34     // set the resulting array to associative
35     $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
36     foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
37         echo $v;
38     }
39 }
40 catch(PDOException $e) {
41     echo "Error: " . $e->getMessage();
42 }
43 $conn = null;
44 echo "</table>";
45 ?>


مشاهدهٔ نتیجه



منابع آموزشی