Mệnh đề LIMIT | MySQL & PHP

“Hãy hòa nhã với những kẻ dở hơi. Ai biết được ngày sau bạn có thể phải làm việc cho một kẻ như vậy.”

Bill Gates

Microsoft

Trong bài hướng dẫn Học PHP và MySQL này, bạn sẽ được tìm hiểu làm thế nào để lấy giới hạn một số bản ghi từ một cơ sở dữ liệu bằng mệnh đề LIMIT.

Mệnh đề LIMIT trong MySQL
Mệnh đề LIMIT trong MySQL

Mệnh đề LIMIT là gì?

Mệnh đề LIMIT được sử dụng để hạn chế số lượng hàng (rows) được trả về bởi câu lệnh SELECT.

Tính năng này rất hữu ích để tối ưu hóa thời gian tải trang cũng như tăng cường khả năng đọc của trang web.

Ví dụ: Bạn có thể chia số lượng lớn các bản ghi trong nhiều trang bằng cách sử dụng phân trang PHP, trong đó số lượng bản ghi giới hạn sẽ được tải trên mỗi trang từ cơ sở dữ liệu khi người dùng yêu cầu trang đó bằng cách nhấp vào liên kết phân trang.

Cú pháp cơ bản của mệnh đề LIMIT như sau:

SELECT column_name(s) FROM table_name LIMIT row_offset, row_count;

Tham số trong mệnh đề LIMIT

Mệnh đề LIMIT chấp nhận một hoặc hai tham số (phải là số nguyên không âm):

  • Khi hai tham số được chỉ định, tham số đầu tiên chỉ định điểm bắt đầu, trong khi tham số thứ hai chỉ định số lượng hàng cần trả về. (Lưu ý: Hàng đầu tiên là 0)
  • Trong khi đó, khi chỉ có một tham số được đưa ra, nó chỉ định số lượng hàng tối đa sẽ trả về từ đầu tập kết quả.

Ví dụ: Để lấy ba hàng đầu tiên trong CSDL, bạn có thể sử dụng truy vấn sau:

SELECT * FROM persons LIMIT 3;

Để lấy từ hàng 2 đến 4 (cả hàng 4), bạn có thể sử dụng truy vấn sau:

SELECT * FROM persons LIMIT 1, 3;

Bây giờ, chúng ta hãy tạo một truy vấn SQL bằng mệnh đề LIMIT trong câu lệnh SELECT, sau đó chúng ta sẽ thực hiện truy vấn này thông qua việc chuyển nó đến hàm mysqli_query() của PHP lấy một số bản ghi nhất định.

Hãy xem xét bảng person sau trong cơ sở dữ liệu demo:

Bảng person trong CSDL demo

Đoạn code PHP trong ví dụ sau sẽ chỉ hiển thị ba hàng từ bảng person:

Ví dụ 1: Sử dụng mệnh đề LIMIT với MySQLi hướng thủ tục

<?php
/* Cố gắng kết nối MySQL Servwer. Giả sử bạn đang chạy MySQL
server với thiết lập mặc định (user 'root' và không có mật khẩu) */
$link = mysqli_connect("localhost", "root", "", "demo");
 
// Kiểm tra kết nối
if($link === false){
    die("ERROR: Không thể kết nối. " . mysqli_connect_error());
}
 
// Cố gắng thực hiện truy vấn
$sql = "SELECT * FROM persons LIMIT 3";
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>";
        // Giải phóng bộ nhớ của biến
        mysqli_free_result($result);
    } else{
        echo "Không có bản ghi nào được tìm thấy.";
    }
} else{
    echo "ERROR: Không thể thực thi $sql. " . mysqli_error($link);
}
 
// Đóng kết nối
mysqli_close($link);
?>

Ví dụ 2: Sử dụng mệnh đề LIMIT với MySQLi hướng đối tượng

<?php
/* Cố gắng kết nối MySQL Servwer. Giả sử bạn đang chạy MySQL
server với thiết lập mặc định (user 'root' và không có mật khẩu) */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
// Kiểm tra kết nối
if($mysqli === false){
    die("ERROR: Không thể kết nối. " . $mysqli->connect_error);
}
 
// Cố gắng thực thi truy vấn
$sql = "SELECT * FROM persons LIMIT 3";
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>";
        // Giải phóng bộ nhớ của biến
        $result->free();
    } else{
        echo "Không có bản ghi nào được tìm thấy.";
    }
} else{
    echo "ERROR: Không thể thực thi $sql. " . $mysqli->error;
}
 
// Đóng kết nối
$mysqli->close();
?>

Ví dụ 3: Sử dụng mệnh đề LIMIT với PDO

<?php
/* Cố gắng kết nối MySQL Servwer. Giả sử bạn đang chạy MySQL
server với thiết lập mặc định (user 'root' và không có mật khẩu) */
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    // Thiết lập chế độ PDO error thành Ngoại lệ
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("ERROR: Không thể kết nối. " . $e->getMessage());
}
 
// Cố gắng thực thi truy vấn
try{
    $sql = "SELECT * FROM persons LIMIT 3";  
    $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>";
        // Giải phóng bộ nhớ của biến
        unset($result);
    } else{
        echo "Không có bản ghi nào được tìm thấy.";
    }
} catch(PDOException $e){
    die("ERROR: Không thể thực thi $sql. " . $e->getMessage());
}
 
// Đóng kết nối
unset($pdo);
?>

Sau khi giới hạn kết quả trả về thì chúng ta nhận được như sau:

Kết quả sau khi sử dụng mệnh đề LIMIT để giới hạn bản ghi trả về
Kết quả sau khi sử dụng mệnh đề LIMIT để giới hạn bản ghi trả về

Note: Nếu bạn để ý, trong một số ví dụ gần đây, mình chỉ cần thay đổi câu lệnh truy vấn SQL. Các câu lệnh khác thì giống nhau.

Lời kết

Như vậy là bạn đã biết cách giới hạn bản ghi trả về từ câu lệnh SELECT bằng mệnh đề LIMIT.

Sử dụng mệnh đề LIMIT trong MySQL cũng đơn giản thôi phải không?

Hãy chăm chỉ học tập và ghi nhớ cách làm nhé.

PHPDev

Có thể bạn muốn xem

Leave a reply

Please enter your comment!
Please enter your name here