[英]Get total rows count of table
我想让所有行数都在我的sql中。
表格的前2列如下所示
我的功能看起来像这样
$limit=2;
$sql = "SELECT id,COUNT(*),dt,title,content FROM news ORDER BY dt DESC LIMIT " . $limit;
$stmt = $this->db->prepare($sql);
$stmt->execute();
$stmt->bind_result($id, $total, $datetime, $title, $content);
$stmt->store_result();
$count = $stmt->num_rows;
if ($count > 0) {
while ($stmt->fetch()) {
内循环中,我得到$total
确切值,但MySQL只选择1行-id为1的行。( $count
也为1)
试过这个SQL
SELECT id,dt,title,content FROM news ORDER BY dt DESC LIMIT 2
一切顺利。
为什么在第一种情况下它仅选择1行? 如何解决此问题?
前表我有5行。 我想使用所有字段获取其中的2个,并通过一个查询获取所有行数(在这种情况下为5)。
如果要使用COUNT(*)
请尝试添加GROUP BY dt
COUNT(*)
尽管不确定为什么要使用它)。
编辑
很好,如果您坚持要在一个电话中这样做,请按以下步骤操作:
$sql = "SELECT id,(SELECT COUNT(id) FROM news) as total,dt,title,content FROM news ORDER BY dt DESC LIMIT " . $limit;
删除COUNT(*)。 如果您只保留其中一行,则只会得到1行。
这可能是由于变量$ limit设置为1或未设置,而mysql默认为1引起的。尝试将第一行更改为
$sql = "SELECT id,COUNT(*),dt,title,content FROM news ORDER BY dt DESC";
编辑
改成:
$sql = "SELECT SQL_CALC_FOUND_ROWS,id,dt,title,content FROM news ORDER BY dt DESC LIMIT " . $limit;
然后使用第二个查询
SELECT FOUND_ROWS( )
获取与查询匹配的行数
这完全是硬件问题的根源……为什么除了教授的迟钝方法之外,为一个简单的问题增加复杂性,您又不想运行两个查询?
无论如何....在这里:
SELECT id, (SELECT COUNT(*) FROM news) AS row_count, dt, title, content FROM news ORDER BY dt DESC LIMIT
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.