我正在开发一个可以为每个学生提供评分值的API。这是一个两阶段的评级系统点击这里。在STAGE-I UI 视图中,学生列表显示学生姓名和评分点。要给学生评分,只需点击评分星,就会出现带有一些评分类别的STAGE-II。每个学生的评分取决于这部分。每个类别的评级值为Sum_of_Rating_value/rating_numbers。在对所有类别进行评分(或对其中的 2/3 进行评分)后,结果将重新评分为Sum_of_ALL_Category/Category_number并放置在STAGE-I学生列表 UI 视图中。注意:我已经完成了所有的计算。
现在,当我将 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_rating和review_count。它只显示null。
但是,当我在 WHERE 子句中将 stu_id 定义为 2 或 3 时,它不仅在定义的 stu_id 中而且在其他 id 中都显示了相同的 average_rating 和相同的评论。
但我想要每个学生的准确平均点/评论。
我认为,问题在于QUERY。所以,有人能帮我吗???
你的 $sql_query 真的很难读;我会把它分成更小的部分。
为什么你有(select count(review) from review WHERE stu_id=14 )as review_count
作为查询的一部分?
神奇的数字 14 有什么特别之处?在代码中使用幻数通常是个坏主意。谁是14号学生?为什么这个数字是硬编码的,而不是使用 $stu_id 或其他一些变量?这可能与您没有获得 review_count 的原因有关。
如果你得到一个REVIEW_COUNT当您更改为WHERE stu_id=2
或WHERE stu_id=3
,这可能是因为review
对学生的条目2
和3
,但不为学生14
,或者是因为$ stu_id要么2
或3
当您进行查询。我猜是后者。
由于您的整体查询包含在最外层中FROM student_info WHERE stu_id='$stu_id'
,因此它应该只获取 ID 为 $stu_id 的学生的信息。如果该 id 不等于 14,则没有学生 14 的信息,因此当您尝试运行针对学生 14 的评论计数的代码时,它不会找到任何内容(您正在搜索已经过滤为只有学生 $stu_id 的数据)。
我不确定这一点,因为代码很难阅读,因为它目前是结构化的,但我想这是排除故障的一个很好的起点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句