我几乎已经设法让分页工作了。 我想向用户显示找到的记录总数和当前显示的记录。例如:
4000 found, displaying 0-100.
我用nr 2测试这个(因为我没有那么多记录,有20个)。
所以我使用LIMIT $start, $nr_results;
我是否必须进行两次查询才能按照我想要的方式显示结果,一次查询获取所有记录,然后使mysql_num_rows
获取所有记录,然后使用LIMIT进行记录?
我有这个:
mysql_num_rows($qry_result);
$total_pages = ceil($num_total / $res_per_page); //$res_per_page==2 and $num_total = 2
if ($p - 10 < 1) {
$pagemin=1;
}
其他{ $ pagemin = $ p - 10; } if($ p + 10&gt; $ total_pages){ $ pagemax = $ total_pages; } 其他{ $ pagemax = $ p + 10; }
以下是查询:
SELECT
mt.*,
fordon.*,
boende.*,
elektronik.*,
business.*,
hem_inredning.*,
hobby.*
FROM classified mt
LEFT JOIN fordon ON fordon.classified_id = mt.classified_id
LEFT JOIN boende ON boende.classified_id = mt.classified_id
LEFT JOIN elektronik ON elektronik.classified_id = mt.classified_id
LEFT JOIN business ON business.classified_id = mt.classified_id
LEFT JOIN hem_inredning ON hem_inredning.classified_id = mt.classified_id
LEFT JOIN hobby ON hobby.classified_id = mt.classified_id
ORDER BY modify_date DESC
LIMIT 0, 2
谢谢,如果您需要更多输入,请告诉我。
基本上Q是,我是否必须进行两次查询?
答案 0 :(得分:1)
您可以使用以下两个查询:
SELECT SQL_CALC_FOUND_ROWS *
FROM t_source
LIMIT 100, 10;
SELECT FOUND_ROWS();
第一个将返回结果, second 将显示将返回的记录数量没有{{ 1}}子句。
答案 1 :(得分:0)
是的,要获得找到的记录总数,您需要另一个查询
虽然你目前获得总数的方法是不可接受的
您可以使用select count(*) ...
查询或SQL_CALC_FOUND_ROWS/FOUND_ROWS()
特征
答案 2 :(得分:0)
SQL_CALC_FOUND_ROWS查询的替代方法是选择COUNT(*)的查询。 This article表明,当适当的索引可用时,它甚至可能更快:
SELECT COUNT(*) FROM your_table WHERE ...