Trong bài này, chúng ta sẽ tìm hiểu về câu lệnh order by và limit trong MySQL với PHP. Để học tốt bài này, các bạn cần đọc lại bài Cài đặt môi trường lập trình Web PHP với XAMPP để biết cách chạy ứng dụng web PHP với XAMPP.
Các ví dụ order by và limit dữ liệu sẽ thực hiện trên table gochocit_posts trong database gochocit. Database và table này đã được tạo trong bài Tạo database và tạo table trong MySQL với PHP. Các bạn cần đọc lại để xem cấu trúc của database và table trên.
Câu lệnh ORDER BY giúp sắp xếp các row truy vấn được theo thứ tự giảm dần hoặc tăng dần. Cú pháp:
SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC
Câu lệnh LIMIT giúp giới hạn số lượng row truy vấn được. Cú pháp:
SELECT * FROM table_name LIMIT numberofrecords
1. Order by và limit sử dụng MySQLi (object-oriented)
Câu lệnh SELECT FROM với order by và limit được thực thi khi đối tượng mysqli là $conn gọi hàm query()
.
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "gochocit";
// create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM gochocit_posts ORDER BY post_author";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "Author: " . $row["post_author"]. " - Title: " . $row["post_title"]. " - " . $row["post_content"]. "<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>
Khi muốn giới hạn số row được truy xuất thì sử dụng thêm câu lệnh LIMIT.
$sql = "SELECT * FROM gochocit_posts ORDER BY post_author LIMIT 2";
2. Order by và limit sử dụng MySQLi (procedural)
Câu lệnh SELECT FROM với order by và limit được thực thi khi gọi hàm mysqli_query()
.
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "gochocit";
// create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// check connection
if (!$conn) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM gochocit_posts ORDER BY post_author";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo "Author: " . $row["post_author"]. " - Title: " . $row["post_title"]. " - " . $row["post_content"]. "<br>";
}
} else {
echo "0 results";
}
mysqli_close($conn);
?>
3. Order by và limit sử dụng PDO (PHP Data Objects)
Câu lệnh SELECT FROM với order by và limit được thực thi khi đối tượng PDO là $conn gọi hàm prepare()
rồi thực thi select với hàm execute()
.
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "gochocit";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM gochocit_posts ORDER BY post_author");
$stmt->execute();
// set the resulting array to associative
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$result = $stmt->fetchAll();
foreach($result as $row) {
echo "Author: " . $row["post_author"]. " - Title: " . $row["post_title"]. " - " . $row["post_content"]. "<br>";
}
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
?>
Các bạn có thể tìm hiểu thêm cách sử dụng ORDER BY và LIMIT ở MySQL LIMIT Clause và MySQL ORDER BY Keyword.