我试图根据他们得到的标记从数据库中获取学生人数。我使用COUNT(*)来获取具有不同分数的学生人数:
SELECT COUNT(*) FROM marks WHERE totalmarks >=21 AND totalmarks <=30
它可以显示我的数据库sql中21到30之间标记的学生数。但是当我尝试PHP编码时,这个数字无法显示,这是我的编码:
<?php
require("config1.php");
$query="SELECT COUNT(*) FROM marks WHERE totalmarks >=21 AND totalmarks <=30";
try {
$stmt = $db->prepare($query);
$result = $stmt->execute();
}catch (PDOException $ex) {
$response["success"] = 0;
$response["message"] = "Database Error!";
die(json_encode($response));
}
$rows = $stmt->fetchAll();
if ($rows){
$response["success"]=1;
$response["message"]="No of student";
$response["count"]=count($rows);
array_push($response["count"]);
echo json_encode($response);
}else {
$response["success"] = 0;
$response["message"] = "No Available!";
die(json_encode($response));
}
?>
结果是{"success":1,"message":"No of student","count":1}
,
它只显示1,右边应该是4个学生。
感谢有人可以帮助我。
enter image description here
答案 0 :(得分:0)
您的SQL查询的结果是包含值4的单行。您将其加载到$rows
,如下所示:
Array
(
[0] => Array
(
[count(*)] => 4
[0] => 4
)
)
现在您再次致电count
,这次是$rows
。
您的答案“4”位于$rows[0][0]
。
答案 1 :(得分:0)
您可以使用column_name显示计数。
$query="SELECT COUNT(*) as count FROM marks WHERE totalmarks >=21 AND totalmarks <=30";
if ($rows){
$response["success"]=1;
$response["message"]="No of student";
$response["count"]= $rows[0]['count'];
array_push($response["count"]);
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "No Available!";
die(json_encode($response));
}
答案 2 :(得分:-1)
如果没有给出列名,则无法检索列名,因此请更改SQL以匹配:
"SELECT COUNT(*) AS count FROM marks WHERE totalmarks >=21 AND totalmarks <=30"
它应该按预期工作:)