PHP MYSQL数据计数从mysql检索出错


PHP MYSQL data count retrieve from mysql gone wrong

我是php和MySQL的新手。 我有一个用这个SQL构建的表

CREATE TABLE classs
(sid INT(11) NOT NULL,
cid INT(11) NOT NULL,
lid INT(11) NOT NULL,
 date DATE NOT NULL,
UNIQUE (sid, cid,lid,date));

我的数据库输入是

sid || cid|| lid date (ALL DATE IS DIFFERENT with in case of same ID)
==================================
2001      ||  1001   || 8
2001      ||  1001   || 8
2002      ||  1001   || 8
2003      ||  1001   || 8 
2003      ||  1001   || 8
==================================

在这里,我需要使用 php 构建一个代码来显示这样的结果

2001          2
2002          1
2003          2

我在视图上使用此代码.php

<?php
require_once('core/init.php');
$con=mysqli_connect("localhost","root","root","studentattendancesystem");
if (mysqli_connect_errno())
{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="select *,count(sid) from classs group by sid";
$result = $con->query($sql);
if ($result->num_rows > 0)
{
  while($row = $result->fetch_assoc()) 
  {
    $rowcount=mysqli_num_rows($result);
    $sid = $row["sid"];
    echo $sid, " ", $rowcount," ","<br>";    
  } 
}
else
{
  echo 'Failed';
} 

但我的输出是

2001         3 //should be 2
2002         3 //should be 1
2003         3 //should be 2

我错过了什么?

我认为我们都缺少的一件事是他正在设置$rowcount =mysqli_num_rows($result)

所以他当然得到三个,$row计数需要设置为:$rowcount = $row['count']就像奥利的例子一样。

您的查询不正确

select *,count(sid) from classs group by sid

应该是

SELECT studentID,COUNT(*) FROM classs GROUP BY studentID

小提琴

专业提示:不要在程序的查询中使用SELECT *,除非您确切知道为什么要这样做。它可能是浪费和不正确的,尤其是在包含GROUP BY的查询中。 此外,避免SELECT *将使你在查询中正确获取列名。

您正在尝试按学生证汇总原始数据。

此查询将为您执行此操作。

SELECT studentID, COUNT(*) count
  FROM class
 GROUP BY studentID

我已经把它放进了一个 sqlfiddle http://sqlfiddle.com/#!2/5c6d1/1/0

我认为你的表格比你向我们展示的要复杂得多。在这种情况下,您可能会误会示例数据。

无论如何,大多数开发人员使用简单的SQL客户端(如phpMyAdmin或HeidiSQL之类的)对此类查询进行故障排除。然后他们将它们嵌入到他们的 php 中。