2012-04-10 31 views
9

Đã theo dõi các ví dụ từ here và nhiều trang web khác nhưng không nhận được kết quả mong đợiNhận tổng số hàng khi sử dụng LIMIT

Đoạn mã PHP của tôi;

$query="SELECT * FROM book"; 
$result=mysql_query($query); 
echo mysql_num_rows($result); //returns 14 


$query="SELECT FOUND_ROWS()"; 
$rtotal=mysql_query($query); 
echo mysql_result($rtotal,0); //returns 14 


$query="SELECT * FROM book LIMIT 0,4"; 
$result=mysql_query($query); 
echo mysql_num_rows($result); //returns 4 


$query="SELECT FOUND_ROWS()"; 
$rtotal=mysql_query($query); 
echo mysql_result($rtotal,0); //returns 4 Why is it 4 and not 14?? 

Trong ví dụ cuối cùng tại sao nó 4 và không 14 ?? Tôi đang làm gì sai?

Trả lời

18

Thêm một SQL_CALC_FOUND_ROWS để tuyên bố chọn của bạn: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_found-rows

Điều này buộc MySQL để đếm các hàng như thể tuyên bố giới hạn là không có mặt.

$query="SELECT SQL_CALC_FOUND_ROWS * FROM book LIMIT 0,4"; 
+0

Lưu ý rằng điều này nên được thêm vào truy vấn thứ ba. – alexn

+0

cảm ơn !! và điều này thậm chí đã được đề cập trong blog tôi đọc, bằng cách nào đó tôi đã bỏ lỡ nó hoàn toàn – user6890

2

Truy vấn gần đây nhất của bạn trả lại 4 hàng ($query="SELECT * FROM book LIMIT 0,4";).

Đó là lý do tại sao nó trả về 4 và không 14.


Để trích dẫn tài liệu:

Trong sự vắng mặt của tùy chọn SQL_CALC_FOUND_ROWS trong câu lệnh SELECT thành công gần đây nhất, FOUND_ROWS() trả về số hàng trong tập kết quả được trả về bởi câu lệnh đó. Nếu câu lệnh bao gồm mệnh đề LIMIT, hàm FOUND_ROWS() trả về số hàng lên đến giới hạn.

+1

Sai. Hàm FOUND_ROWS trả về số hàng có thể được truy vấn trước trả về nếu không có giới hạn nào được đặt. http://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_found-rows – alexn

+1

@alexn: Không sai, hãy xem tài liệu (được trích dẫn ở trên). Nhưng để làm cho nó hoạt động như mong đợi, 'SQL_CALC_FOUND_ROWS' cần được thêm vào. –

+2

Bây giờ bạn đã chỉnh sửa câu trả lời đúng. Bạn đã nói rằng nó không hoạt động kể từ khi anh ta sử dụng một giới hạn trong truy vấn trước đó. Tôi xóa bỏ phiếu giảm giá nếu câu trả lời của bạn được chỉnh sửa. – alexn

Các vấn đề liên quan