php - 使用 LIMIT 时获取总行数

标签 php mysql

一直关注 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?我做错了什么?

最佳答案

将 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";

关于php - 使用 LIMIT 时获取总行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10084029/

相关文章:

mysql - 按提供的 id 顺序获取记录,未提供的 id 应按字母顺序在这些 id 之后索引

php - echo 允许空值的日期变量的 fatal error

php - 数据库查询不符合第二个条件

php - 如何使用 php 获取子文件夹的文件列表并将它们写入 JSON 中?

mysql - 如何在mysql的where子句中设置随机连接项?

MySQL多重PK

php - 在 _GET 中发送数组

PHP 将两个关联数组合并为一个数组

php - 填充复选框,然后将选择更新到 mysql

php - MySQL如何统计同一个表的多个列中出现的一次?