通过PHP在MySQL中按表显示分组

时间:2019-03-02 06:20:40

标签: php mysql

我在mysql中有一个查询,它将返回按某些字段分组的表。我如何回应这些结果? 这是我的代码。

$stmt = $con->prepare("
SELECT classSubject
     , COUNT(*) cnt
  from Class 
 where grade=? 
   and department=? 
   and classGroup IN(?,3) 
 GROUP 
    BY classSubject;
");
    $stmt->bind_param("isi", $grade, $department, $classGroup);

 //executing the query 
 $stmt->execute();

此后我应该怎么做,以便我可以回显所有结果?

2 个答案:

答案 0 :(得分:1)

我建议您查看一个好的网站,该网站可以作为使用哪种语法的示例,例如this one

$sql = "SELECT classSubject, COUNT(*) cnt FROM Class ";
$sql .= "WHERE grade = ? AND department = ? AND (classGroup = ? OR classGroup = 3) ";
$sql .= "GROUP BY classSubject";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("isi", $grade, $department, $classGroup);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "(classSubject, count) = (" . $row['classSubject'] . ", " . $row['cnt'] . ")";
    }
}

请注意,我在select中的COUNT(*)术语中添加了别名,以便我们可以在PHP中轻松按名称引用它。您也可以只使用它们的数字索引来引用列,但是按名称进行命名是一种更容易,更安全的方法。

答案 1 :(得分:0)

在阅读了Tim Biegeleisen的答案并做了一些冲浪之后,我想到了这个解决方案。执行查询后:

$response = array(); 
 $response['success']=true; 

    $stmt->bind_result($classSubject,$cnt);

    while ($stmt->fetch()) 
    {
        $response[$classSubject]=$cnt;
    }

 echo json_encode($response);

希望这对某人有帮助。