php - 在 php Rest api 中从数据库获取评级数据到 JSON 数组

标签 php mysql json api

我正在开发一个api,它将为每个学生提供评分值。这是一个两阶段的评级系统Click Here 。在STAGE-I UI View 中,学生列表将显示,其中包含学生姓名和评分点。要对学生进行评分,请单击评分星级,STAGE-II 会显示一些评分类别。每个学生的评分取决于这一部分。每个类别的评级值为Sum_of_Rating_value/rating_numbers。对所有类别进行评分(或对其中的 2/3 进行评分)后,结果将重新评分为 Sum_of_ALL_Category/Category_number 并放置在 STAGE-I 学生列表 UI View 中。注意:我已经完成了所有的计算。

现在,当我将 QUERY 中的数据称为:

<?php
$connection = mysqli_connect("localhost","root","pass","DB_NAME") or die("Error " . mysqli_error($connection));<br><br>
$stu_id=$_POST['stu_id'];<br><br>
 $sql_query = " SELECT *, FORMAT(((SELECT SUM(view_rating.total_points+view_rating2.total_points2+view_rating3.total_points3+view_rating4.total_points4+view_rating5.total_points5) FROM view_rating,view_rating2,view_rating3,view_rating4,view_rating5)  / (SELECT SUM(view_rating.rating_number+view_rating2.rating_number2+view_rating3.rating_number3+view_rating4.rating_number4+view_rating5.rating_number5) FROM view_rating,view_rating2,view_rating3,view_rating4,view_rating5) ),1) as average_rating,(select count(review)  from review WHERE stu_id=14 )as review_count FROM student_info WHERE stu_id='$stu_id' ";<br><br>
$user_array=array();<br>
$main_array=array(); <br><br>
 $result = mysqli_query($connection,$sql_query);<br>
 while($row =mysqli_fetch_assoc($result))
{<br>
    $user_array['stu_id']=$row['stu_id'];<br>
    $user_array['name']=$row['name'];<br>
    $user_array['mobile']=$row['mobile'];<br>
    $user_array['email']=$row['email'];<br>
    $user_array['gender']=$row['gender'];<br>
    $user_array['Dept']=$row['Dept'];<br>
    $user_array['blood_group']=$row['blood_group'];<br>
$user_array['average_rating']=$row['average_rating'];<br>
$user_array['review_count']=$row['review_count'];<br>
array_push($main_array,$user_array);<br>
}<br><br>
$mainarray=array("STUDENTS"=>$main_array);<br>
$jsonData = json_encode($mainarray, JSON_PRETTY_PRINT);<br>
echo $jsonData;<br>
?>



在 JSON 数组中,它不会从数据库中提取 average_ ratingreview_count。它只显示null
但是当我在WHERE子句中将stu_id定义为2或3时,它不仅在定义的stu_id中而且在其他id中显示相同的average_ rating和相同的评论。
但我想要每个学生的准确平均分/评论。

我认为,问题在于查询。那么,有人可以帮我吗???

最佳答案

你的 $sql_query 真的很难读;我会把它分成更小的部分。

为什么您将 (select count(review) from review WHERE Stu_id=14 )as review_count 作为查询的一部分?

神奇数字 14 有什么特别之处?在代码中使用魔数(Magic Number)通常是个坏主意。 14号同学是谁?为什么这个数字是硬编码的而不是使用 $stu_id 或其他变量?这可能与您没有获得 review_count 的原因有关。

如果您将其更改为 WHERE Stu_id=2WHERE Stu_id=3 时确实获得了 review_count,则可能是因为 review有学生 23 的条目,但没有学生 14 的条目,或者因为 $stu_id 是 23 当您进行查询时。我猜是后者。

由于您的整体查询包含在最外层的 FROM Student_info WHERE Stu_id='$stu_id' 中,因此它应该只获取 ID 为 $stu_id 的学生的信息。如果该 id 不等于 14,则没有学生 14 的信息,因此当您尝试运行学生 14 的评论计数代码时,它不会找到任何内容(您在已过滤为的数据集中搜索仅包含学生 $stu_id 的数据。

我对此不确定,因为代码目前的结构很难阅读,但我猜这是故障排除的一个很好的起点。

关于php - 在 php Rest api 中从数据库获取评级数据到 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45167737/

相关文章:

php - 如何使用 $_POST 保存 contentEditable ="true"的 Div?

php - 如何使用jquery发送多个post请求?

php - PHPUnit 的测试输出中的 S 和 W 是什么?

javascript - Dust.js 逻辑助手的问题

使用 dropdownlist mvc 无法准确调用 JQuery 脚本

php - 在 JSON Web 服务中验证和跟踪用户

php - Mysql - 重复 key 更新不适用于 2 个 key

php - 如何在 PHP 中添加好友/解除好友功能?

mysql - 如果子查询没有找到连接点,如何忽略 WHERE IN 子句?

php - 使用 PHP json_encode 解析错误