[英]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.