01/10/2018, 16:55

Bài 12: Limit dữ liệu MySQL và PHP

Như mình đã nói ở trên thì mênh đề LIMIT nhằm giới hạn số lượng records trả về từ câu lệnh truy vấn SELECT . Vậy thì trong những trường hợp nào bạn cần giới hạn số lượng records. Khi bạn đã xác định rõ bạn chỉ cần lấy một số lượng record nhất định(Tin mới, tin hot, sản phẩm hot...). Khi số ...

Như mình đã nói ở trên thì mênh đề LIMIT nhằm giới hạn số lượng records trả về từ câu lệnh truy vấn SELECT . Vậy thì trong những trường hợp nào bạn cần giới hạn số lượng records.

  • Khi bạn đã xác định rõ bạn chỉ cần lấy một số lượng record nhất định(Tin mới, tin hot, sản phẩm hot...).
  • Khi số lượng records có trong bảng CSDL là quá lớn và bạn không muốn hiển thị hết chúng.
  • Khi bạn áp dụng thuật toán phân trang bài viết vào kết quả của câu truy vấn.
  • Khi bạn cần tăng hiệu xuất xử lý của máy chủ CSDL

Cú pháp:

LIMIT [Number]

Trong đó.

  • Number: là số lượng reocrds sẽ được trả về.

Hoặc trong một vài trường hợp bạn cần trả về số lượng records từ đâu và tới đâu thì MySQL cung cấp cho chúng ta từ khóa OFFSET.

Ví dụ: Tôi muốn câu truy vấn trả số lượng records từ 20 tới 30.

Cú pháp:

LIMIT [Number] OFFSET [Offset]

Trong đó.

  • Number: là số lượng records sẽ được trả về.
  • Offset: Vị trí bắt đầu sẽ lấy các records trong câu truy vấn (+1)

Hoặc:

LIMIT [Offset],[NumBer]

Chúng ta đã quá quen thuộc với kiểu viết như thế này nhưng thực chất thì đây đơn thuần là cách viết rút gọn khi sử dụng mệnh đề LIMIT và lưu ý Offset và Number phải cách nhau bởi dấu ,.

Ví dụ 1: Trong bảng News tôi muốn lấy về 10 records đầu tiên.

SELECT * FROM News ORDER BY create_at DESC LIMIT 0,10

Ví dụ 2: Tôi muốn lấy về 10 records tiếp theo.

SELECT * FROM News ORDER BY create_at DESC LIMIT 10,10

Mệnh đề LIMIT được sử dụng trong PHP?

$host = "localhost";
$username = "root";
$password = "";
$dbName = "MySQLDemo";
 
// Tạo kết nối
$dbconn = new mysqli($host, $username, $password, $dbName);
 
// Kiểm tra kết nối
if ($dbconn->connect_error) {
    die("Kết nối thất bại: " . $dbconn->connect_error);
} 
 
// Câu lệnh truy vấn LIMIT 10 records
$sql = "SELECT id, title,slug,intro FROM News LIMIT 10";
 
// Thực thi câu truy vấn và gán kết quả và biến $result
$result = $dbconn->query($sql);
 
// Kiểm tra số lượng record trả về có lơn hơn 0
// Nếu lớn hơn tức là có kết quả, ngược lại sẽ không có kết quả
if ($result->num_rows > 0) {
   // Sử dụng vòng lặp while để lặp kết quả
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Title: " . $row["title"]. " - Slug: ".$row['slug']." -  Intro:" . $row["intro"]. "<br>";
    }
} else {
     echo "Không có record nào";
}
// ngắt kết nối
$dbconn->close();

Tổng kết.

Trong bài viết này mình đã hướng dẫn các bạn làm sao có thể giới hạn được số lượng records trả về từ câu lệnh SELECT. Tuy mệnh đề LIMIT có thể không quá quan trọng nhưng cũng không thể thiếu trong một số trường hợp nhất định.

Vũ Văn Thanh

12 chủ đề

2597 bài viết

Cùng chủ đề
0