【问题标题】:PHP/mysql count duplicates and output as numbers [duplicate]PHP / mysql计算重复并输出为数字[重复]
【发布时间】:2021-05-23 06:28:37
【问题描述】:

我想计算所有重复项并将它们作为数字输出。

数据库:

user   
Sam
Sam    
Tom    
Tom    
Tom 
John

这是我的代码:

 $sql = "select user, count(*) duplicates from users group by user order by duplicates desc";
      $result = $conn->query($sql);
  
      if ($result->num_rows > 0) {
          // output data of each row
          while($row = $result->fetch_assoc()) {
              echo $row["user"]. "<br>";
          }
      } else {
          
      }

这行得通,但这是输出:

Tom
Sam
John

我希望输出只有数字:

3
2
1

感谢您的回答。

【问题讨论】:

  • 只是:select count(*) duplicates from users group by user order by duplicates desc?
  • @AlandSleman 确定可以db-fiddle.com/f/b6dLPM7GnCCSaJqya5aKS6/0
  • @GMB sql 语句有效,但是当您将其放入我的代码中时它不起作用
  • 建议在寻求帮助时不要使用“不起作用”阶段。它可以意味着很多事情。以专业人士的身份,给在这里志愿服务的人一个有意义的回应。为什么不?是不是出错了?结果不符合您不断变化的规范吗?
  • @danblack 它返回 else,空白。什么都没有发生

标签: php mysql count


【解决方案1】:

您可以使用SQL 来计数(就像您所做的那样)并将数字存储在属性中。这个属性可以直接在 PHP 中读取。您必须在 SQL 中使用AS 声明您的计数变量。

$sql = "select user, count(*) AS duplicates from users group by user order by duplicates desc";
$result = $conn->query($sql);

if ($result->num_rows > 0) 
{
  // output data of each row
  while($row = $result->fetch_assoc()) 
  {
    echo $row["duplicates"]. "<br>";
  }
} 
else 
{
}

【讨论】:

  • @AlandSleman SQL 语句应该可以工作。您的计数以重复的形式存储。我在您提供的 DB Fiddle 中对其进行了测试。数据库连接工作,你测试过吗?您是否已经通过基本选择 * 从用户那里获取了一些数据?
  • 谢谢它的工作,还有其他问题。
  • @AlandSleman 你能详细说明一下吗?
【解决方案2】:

不要选择user 列,而是选择ID 列:

$sql = "select ID, count(*) duplicates from users group by user order by duplicates desc";

然后在你的echo中输出ID列:

echo $row["ID"]. "<br>";

【讨论】:

  • 对不起,我只想要用户。问题已编辑
  • 这将为您提供所需的输出;重复用户的计数。您对问题的更新似乎仍然表明这是您想要的;不太确定为什么这个答案被否决。
  • 我也试过你的,它不起作用返回,没有任何反应。
  • @ObsidianAge 没有名为 Id 的属性。他上面使用的数字是特定名称的总和。
  • @AlandSleman 但是,看起来您的 PHP 代码可能是错误的。请分享整个数据库连接代码,以便我们进行调查。 SQL 查询正确
猜你喜欢
  • 1970-01-01
  • 2016-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-16
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
相关资源
最近更新 更多