Php 代码点火器SQL\u计算\u找到\u行
如何获取特定查询的总行数,并将查询结果限制为10行。例如我有一张叫sample的桌子。它有400行。在运行where name=“%Sam%”之类的查询时,它会返回213行。现在,我将只获取前10行并将结果显示给用户,但我需要返回的总行数。我应该如何在代码点火器中完成它Php 代码点火器SQL\u计算\u找到\u行,php,mysql,sql,codeigniter,pagination,Php,Mysql,Sql,Codeigniter,Pagination,如何获取特定查询的总行数,并将查询结果限制为10行。例如我有一张叫sample的桌子。它有400行。在运行where name=“%Sam%”之类的查询时,它会返回213行。现在,我将只获取前10行并将结果显示给用户,但我需要返回的总行数。我应该如何在代码点火器中完成它 SELECT SQL_CALC_FOUND_ROWS * FROM sample WHERE name like "%sam%" 像这样? 如何检索总数计数?您需要运行第二个查询
SELECT
SQL_CALC_FOUND_ROWS *
FROM
sample
WHERE
name like "%sam%"
像这样?
如何检索总数计数?您需要运行第二个查询以获取
SQL\u CALC\u FOUND\u ROWS的结果:
SELECT FOUND_ROWS()
这将返回使用SQL\u CALC\u found\u ROWS
找到的值。您可能会发现使用别名更容易获得结果,不过:
SELECT FOUND_ROWS() AS num_results
您可以使用两个查询,一个用于获取计数,另一个返回有限的结果
就像在模型中一样,创建一个只返回count变量的函数
并创建生成分页结果的第二个函数
例如
这里是控制器代码
$where=//已计算
$count = count($this->model->count($where));
if( $count > 0 ) { $total_pages = ceil($count/$limit); } else { $total_pages = 0; }
if ($page > $total_pages) $page = $total_pages;
$start = $limit * $page - $limit;
$users = $this->model->limit($sidx,$sord,$start,$limit,$where);
$count = count($this->model->count($where));
if( $count > 0 ) { $total_pages = ceil($count/$limit); } else { $total_pages = 0; }
if ($page > $total_pages) $page = $total_pages;
$start = $limit * $page - $limit;
$users = $this->model->limit($sidx,$sord,$start,$limit,$where);