簡體   English   中英

SQL內部聯接每次獲取不同的結果

[英]SQL Inner Join fetch different results every time

我在這個問題中的項目堆棧如下

我有2張桌子測驗 (由老師填寫)有10列

id,部,主題,問題,ans1,ans2,ans3,ans4,correct_ans,技術名稱

學生有7個山口

ID,用戶名,密碼,用戶類型,部門,主題,答案

如果用戶(成功)登錄dborad.php,他將看到鏈接,每個鏈接將帶他進入quiz.php頁面中的其他測驗( 使用get方法獲取學生的主題和部門 ),在此quiz.php頁面中,他將看到他的測驗有4個答案,我的問題是內部聯接不起作用,它假設要從dborad.php中獲取他選擇的特定主題的測驗,但有一些與其他學生不同的問題,但它不是

dboard.php

if (isset($_SESSION['username'])) {
if ($_SESSION['usertype'] === "isstudent") {
$SQLgetParea = "SELECT * From students WHERE username = '$_SESSION[username]' ";
          $SQLgetPareaResult = mysqli_query($conn,$SQLgetParea);
          $SQLgetPareaRow = mysqli_fetch_array($SQLgetPareaResult,MYSQLI_NUM);
          $getDept = $SQLgetPareaRow[4];

            $sql2 = "SELECT students.*, quiziz.*
                      FROM students 
                      INNER JOIN quiziz 
                      ON students.dept=quiziz.dept 
                      AND students.subject = quiziz.subject 
                      WHERE students.dept = '".$getDept."' 
                        ";
                $result2 = mysqli_query($conn,$sql2);

                while ($row2 = mysqli_fetch_array($result2,MYSQLI_NUM)) {
                  echo "
          <a href='quiz.php?subject=".$row2[5]."?dept=".$row2[4]."'>Enter Exam for ".$row2[5]."</a>
          <br><br>";
        }
}
}

quiz.php

if(isset($_SESSION['username'])){
              if ($_SESSION['usertype'] === "isstudent") {

                $conn->query("SET NAMES utf8"); 
                $conn->query("SET CHARACTER SET utf8");

                $SQLgetParea = "SELECT * From students ";
                $SQLgetPareaResult = mysqli_query($conn,$SQLgetParea);
                $SQLgetPareaRow = mysqli_fetch_array($SQLgetPareaResult,MYSQLI_ASSOC);
                $getSub = $SQLgetPareaRow['subject'];

               $sql2 = "SELECT quiziz.*, students.*
                        FROM quiziz 
                        INNER JOIN students 
                        ON quiziz.dept=students.dept 
                        AND quiziz.subject = '".$getSub."' ";
                $result2 = mysqli_query($conn,$sql2);

                while ($row2 = mysqli_fetch_array($result2,MYSQLI_ASSOC)) {

                  echo "
                  <li>".$row2['question']."</li>
                  <li><div class='ruler'></div></li>
                  <li>".$row2['ans1']."</li>
                  <li>".$row2['ans2']."</li>
                  <li>".$row2['ans3']."</li>
                  <li>".$row2['ans4']."</li>
                  ";
                }

              }
            }

要為每個用戶獲取不同的問題,請創建一個問題表,並為要顯示給用戶的每個問題分配一個ID。

之后,您只需要創建一個帶有隨機函數的向量即可通過id從數據庫中獲取這些問題。 將列問題從測驗更改為question_id,這是您最近創建的表的外鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM