[英]Find and Replace Multi-Row Phrases/text Within PHP Arrays without damaging the array
[英]Comparison in PHP SELECT statement with multi-row array as comparing variable
我有一个按 id、sum 和排名分组的查询。 问题是该表包含所有类,并且没有用于定义每个数据类的列。
因此,我必须使用另一个表来获取与被排名的 id 属于同一类的 id,然后比较它们。
这是我已经尝试过但导致错误的代码:
$que = "SELECT * FROM registration WHERE CurrentClass = (SELECT CurrentClass FROM registration WHERE AdmNo = '$user_id')";
$statemen = $connect->prepare($que);
$statemen->execute();
$res = $statemen->fetchAll();
foreach($res as $rowww) {
$resu1 = mysqli_query($conn, "SELECT AdmNo, rank, total_score
FROM (SELECT * WHERE AdmNo = '".$rowww['AdmNo']."', IF(@marks=(@marks:=total_score), @auto, @auto:=@auto+1) AS rank
FROM (SELECT * FROM
(SELECT AdmNo, SUM(Score) AS total_score
FROM `{$examination}`,
(SELECT @auto:=0, @marks:=0) as init
GROUP BY AdmNo) sub ORDER BY total_score DESC)t) as result
WHERE AdmNo = '$user_id'");
$row1 = mysqli_fetch_assoc($resu1);
$sum = $row1['total_score'];
$position = $row1['rank'];
$totalMarks = round($sum, 2);
}
据我了解,错误
警告:mysqli_fetch_assoc() 期望参数 1 为 mysqli_result,在 E:\\xampp\\htdocs\\user...
是因为在第一个查询中返回了多行,这就是为什么我需要有关如何解决此问题的帮助。
所需的结果是从注册中选择的 AdmNo 是唯一应该用于排名的 AdmNo。
尝试这个:
$query = "SELECT AdmNo, rank, total_score FROM (
SELECT * WHERE AdmNo = '" . $rowww['AdmNo'] . "', IF(@marks=(@marks:=total_score), @auto, @auto:=@auto+1) AS rank FROM (
SELECT * FROM (
SELECT AdmNo, SUM(Score) AS total_score FROM `" . $examination . "`, (
SELECT @auto:=0, @marks:=0
) as init GROUP BY AdmNo
) sub ORDER BY total_score DESC
) t
) as result WHERE AdmNo = '" . $user_id . "'";
$resu1 = mysqli_query($conn, $query);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.