使用LIMIT时获取总行数

use*_*890 9 php mysql

以下是来自这里和许多其他网站的示例,但没有得到预期的结果

我的PHP代码片段;

$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??
Run Code Online (Sandbox Code Playgroud)

在最后一个例子中为什么它是4而不是14?我究竟做错了什么?

hop*_*ppa 18

将SQL_CALC_FOUND_ROWS添加到select语句中:http://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_found-rows

这会强制MySQL对行进行计数,就像限制语句不存在一样.

$query="SELECT SQL_CALC_FOUND_ROWS * FROM book LIMIT 0,4";
Run Code Online (Sandbox Code Playgroud)