استفاده از دستور ORDER BY در MySQL در 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 ?>
منابع آموزشی