一直关注来自here和许多其他网站的示例,但未获得预期结果
我的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??
在最后一个例子中为什么它是4而不是14?我做错了什么?
答案 0 :(得分: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";
答案 1 :(得分:2)
您最近的查询返回了4行($query="SELECT * FROM book LIMIT 0,4";
)。
这就是为什么它返回4而不是14。
引用文档:
如果最近成功的SELECT语句中没有SQL_CALC_FOUND_ROWS选项,则FOUND_ROWS()将返回该语句返回的结果集中的行数。如果语句包含LIMIT子句,则FOUND_ROWS()返回最多限制的行数。