计算MySQL查询的所有结果以进行分页

Joe*_*oel 2 php mysql

我正在构建一个搜索页面,每个页面都有10个结果.为此,我想在底部显示页码(例如在谷歌中),这样用户就可以跳转到特定的页面结果.为了做到这一点,我需要知道查询的总体计数(例如,如果我每页显示10个结果,并且特定查询在我的表中返回73行,我将需要显示8页的链接).

我能想到的唯一方法是使用以下(显然效率低下)查询:

// Query for the current page
$res = mysql_query("select * from TABLE WHERE COL='Sample' LIMIT $offset,10");

// Geeting the total count do I can build links to other pages
$res2 = mysql_query("select COUNT(*) fromTABLE WHERE COL='Sample'");    
Run Code Online (Sandbox Code Playgroud)

这是唯一的方法吗?

谢谢,

丹尼

Hai*_*vgi 8

你可以使用

SQL_CALC_FOUND_ROWS


mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
    -> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();
Run Code Online (Sandbox Code Playgroud)

SQL_CALC_FOUND_ROWS告诉MySQL计算结果集中将有多少行,忽略任何LIMIT子句.然后可以使用SELECT FOUND_ROWS()检索行数

  • @Danny:[对SQL_CALC_FOUND_ROWS或不对SQL_CALC_FOUND_ROWS?](http://www.mysqlperformanceblog.com/2007/08/28/to-sql_calc_found_rows-or-not-to-sql_calc_found_rows/) (3认同)