所以我很难在标题中描述这个问题,但基本上我需要能够从WHERE子句获取我的SQL查询返回的行数,但不受LIMIT子句的限制。
示例:
我有一个由10个帖子组成的表格。他们都有专栏" show" =" true"。
然后我写这样的查询:
$result = "SELECT * FROM table WHERE show = 'true' LIMIT 5";
我现在需要获取一个变量,如果LIMIT
没有在那里,将返回多少帖子。
$count = mysqli_num_rows($result);
不起作用,因为LIMIT
只会告诉我5。我不知何故需要知道那里有10个帖子,列有#34; show" =" true",即使我的查询仅因LIMIT
而返回5个帖子。
非常感谢帮助!
答案 0 :(得分:3)
使用SQL_CALC_FOUND_ROWS
和FOUND_ROWS()
:
select SQL_CALC_FOUND_ROWS t.*
from table t.*
where show = 'true'
limit 5;
然后:
select found_rows();
文档为here。
答案 1 :(得分:2)
您可以使用SQL_CALC_FOUND_ROWS
和FOUND_ROWS()
:
SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE show = 'true' LIMIT 5;
SELECT FOUND_ROWS();
http://dev.mysql.com/doc/refman/5.1/en/information-functions.html#function_found-rows
另一个选择是发出两个不同的查询,一个用于获取前五个(如您已经拥有),另一个用于获取总计数:
SELECT * FROM table WHERE show = 'true' LIMIT 5;
SELECT COUNT(*) FROM table WHERE show = 'true';