【问题标题】:Showing number of rows created by each user显示每个用户创建的行数
【发布时间】:2017-07-29 11:16:53
【问题描述】:

我需要在名为“RE”的表中显示每个用户创建的条目数。 只有非空条目必须通过名为“DD”的列进行计数。 结果必须显示在表格中。 我已经尝试过这样做,但无济于事:

<?php
if ($username = 'John Doe') {
    echo "<table>";
    $query = "SELECT user, COUNT(DISTINCT DD) AS number FROM RE GROUP BY user";

    $results = mysqli_query($conn, $query);

    for ($i = 0; $i < count($results); $i++) {

        foreach ($user[$i] as $field => $value) {

            if ($field == "number") {$number = $value;}
        }
        echo "<tr><td>".$user."</td><td>".$number."</td></tr>";
    }
    echo "</table>";
}

?>

我错过了什么?

【问题讨论】:

  • 查询是否运行?如果是这样,您当前的输出是什么?为什么会出错?
  • 查询运行,并且应该在表格中显示结果。相反,什么也没有发生。
  • 您没有在代码中的任何地方使用$results
  • 编辑了我的问题。没有任何改变
  • 看例子here

标签: php mysql count distinct


【解决方案1】:

在我的脑海中,计数不同可能不是您想要的,而且除了NULL 用于您的“空条目”之外,您还可以有空字符串。如果是这样,那么计算非NULL 和非空字符串的条目可能是合适的。

SELECT
    user,
    SUM(CASE WHEN COALESCE(DD, '') <> '' THEN 1 ELSE 0 END) AS number
FROM RE
GROUP BY user

【讨论】:

    【解决方案2】:

    计算“非空”结果的正确方法是这样的:

    SELECT user, COUNT(DD) AS number
    FROM RE
    GROUP BY user;
    

    这假定“空”是NULL

    【讨论】:

    • 我尝试了您的解决方案,当查询直接在数据库上执行时(我使用的是 Altervista),它运行良好。当我尝试从页面运行它时,它什么也没显示。所以,我认为我犯了一个错误是我写的其余代码,但找不到它。
    猜你喜欢
    • 1970-01-01
    • 2017-10-12
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多