9

一直在关注这里和许多其他网站的示例,但没有得到预期的结果

我的 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?我究竟做错了什么?

4

2 回答 2

18

在您的选择语句中添加 SQL_CALC_FOUND_ROWS: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";
于 2012-04-10T06:25:29.843 回答
2

您最近的查询返回 4 行 ( $query="SELECT * FROM book LIMIT 0,4";)。

这就是为什么它返回 4 而不是 14。


引用文档:

在最近成功的 SELECT 语句中没有 SQL_CALC_FOUND_ROWS 选项的情况下,FOUND_ROWS() 返回该语句返回的结果集中的行数。如果语句包含 LIMIT 子句,则 FOUND_ROWS() 返回达到限制的行数。

于 2012-04-10T06:23:46.053 回答