【发布时间】:2017-12-23 09:04:27
【问题描述】:
我正在开发一个 api,它将为每个学生提供评分值。这是一个两阶段评级系统Click Here。在 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 和相同的评论。 但我想要每个学生的准确平均分/评论。
我认为,问题在于查询。那么,谁能帮帮我???
【问题讨论】:
-
代码中似乎有错误。为什么
标签喜欢?你应该回显
-
您对SQL Injections 持开放态度,应该真正使用Prepared Statements 而不是连接您的查询。特别是因为您根本没有逃避用户输入!
-
查询有问题....您能帮帮我吗,先生?
-
向我们展示您的数据库的结构。当我看到
view_rating.total_points、view_rating2.total_points2、view_rating3.total_points3等时,我感觉数据库设计可能是个问题……