PHP MySQL Sử dụng mệnh đề ORDER BY
Chọn và đặt hàng dữ liệu từ cơ sở dữ liệu MySQL
Mệnh đề ORDER BY được sử dụng để sắp xếp tập kết quả theo thứ tự tăng dần hoặc giảm dần.
Mệnh đề ORDER BY mặc định sắp xếp các bản ghi theo thứ tự tăng dần. Để sắp xếp các bản ghi theo thứ tự giảm dần, hãy sử dụng từ khóa DESC.
SELECT column_name(s)
FROM table_name ORDER BY column_name(s) ASC|DESC
Để tìm hiểu thêm về SQL, vui lòng truy cập hướng dẫn SQL của chúng tôi.
Chọn và đặt hàng dữ liệu với MySQLi
Ví dụ sau đây chọn các cột id, firstname và Lastname từ bảng MyGuests. Các bản ghi sẽ được sắp xếp theo cột họ:
Ví dụ (MySQLi hướng đối tượng)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>
Chạy ví dụ »Dòng mã để giải thích từ ví dụ trên:
Đầu tiên, chúng tôi thiết lập truy vấn SQL để chọn các cột id, firstname và Lastname từ bảng MyGuests. Các bản ghi sẽ được sắp xếp theo cột họ. Dòng mã tiếp theo chạy truy vấn và đưa dữ liệu kết quả vào một biến có tên là $result.
Sau đó, function num_rows()
kiểm tra xem có nhiều hơn 0 hàng được trả về hay không.
Nếu có nhiều hơn 0 hàng được trả về, hàm fetch_assoc()
sẽ đặt tất cả kết quả vào một mảng kết hợp mà chúng ta có thể lặp qua. Vòng lặp while()
lặp qua tập kết quả và xuất dữ liệu từ các cột id, firstname và Lastname.
Ví dụ sau hiển thị giống như ví dụ trên, theo cách thủ tục của MySQLi:
Ví dụ (Thủ tục MySQLi)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "SELECT id, firstname, lastname FROM MyGuests
ORDER BY lastname";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
mysqli_close($conn);
?>
Chạy ví dụ » Bạn cũng có thể đặt kết quả vào bảng HTML:
Ví dụ (MySQLi hướng đối tượng)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<table><tr><th>ID</th><th>Name</th></tr>";
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>";
}
echo "</table>";
} else {
echo "0 results";
}
$conn->close();
?>
Chạy ví dụ »Chọn dữ liệu bằng PDO (+ Báo cáo đã chuẩn bị sẵn)
Ví dụ sau đây sử dụng các câu lệnh đã chuẩn bị sẵn.
Ở đây chúng tôi chọn các cột id, firstname và Lastname từ bảng MyGuests. Các bản ghi sẽ được sắp xếp theo cột họ và nó sẽ được hiển thị trong bảng HTML:
Ví dụ (PDO)
<?php
echo "<table style='border: solid 1px black;'>";
echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>";
class TableRows extends RecursiveIteratorIterator {
function __construct($it) {
parent::__construct($it, self::LEAVES_ONLY);
}
function current() {
return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
}
function beginChildren() {
echo "<tr>";
}
function endChildren() {
echo "</tr>" . "\n";
}
}
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests
ORDER BY lastname");
$stmt->execute();
// set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
echo $v;
}
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?>
Chạy ví dụ »