繁体   English   中英

获取表的总行数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM