Php SQL内部联接每次获取不同的结果

Php SQL内部联接每次获取不同的结果,php,mysql,Php,Mysql,我在本期中的项目堆栈如下: 我有两张桌子,quiziz(由老师填写)有10个 id、部门、主题、问题、ans1、ans2、ans3、ans4、更正、技术名称 学生有7分 id、用户名、密码、用户类型、部门、主题、答案 如果用户(成功)登录到dborad.php,他将看到链接,每个链接将带他到quick.php页面中的不同测验(使用get方法获取学生的主题和部门),在这个quick.php页面中,他将看到他的测验,其中有4个答案,我的问题是内部连接不起作用,它假设为他从dborad.php中选择的

我在本期中的项目堆栈如下:

我有两张桌子,quiziz(由老师填写)有10个

id、部门、主题、问题、ans1、ans2、ans3、ans4、更正、技术名称

学生有7分

id、用户名、密码、用户类型、部门、主题、答案

如果用户(成功)登录到dborad.php,他将看到链接,每个链接将带他到quick.php页面中的不同测验(使用get方法获取学生的主题和部门),在这个quick.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>";
        }
}
}
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>
                  ";
                }

              }
            }
if(isset($\u会话['username'])){
如果($_会话['usertype']==“isstudent”){
$SQLgetParea=“从学生中选择*,其中用户名=“$”会话[username]”;
$SQLgetPareaResult=mysqli_查询($conn$SQLgetParea);
$SQLgetPareaRow=mysqli\u fetch\u数组($SQLgetPareaResult,mysqli\u NUM);
$getDept=$SQLgetPareaRow[4];
$sql2=“选择学生。*,quiziz*
来自学生
内连接quiziz
关于学生.dept=quiziz.dept
和students.subject=quiziz.subject
其中students.dept=“$getDept.”
";
$result2=mysqli_查询($conn,$sql2);
而($row2=mysqli\u fetch\u数组($result2,mysqli\u NUM)){
回声“


“; } } }
quick.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>";
        }
}
}
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>
                  ";
                }

              }
            }
if(isset($\u会话['username'])){
如果($_会话['usertype']==“isstudent”){
$conn->query(“设置名称utf8”);
$conn->query(“设置字符集utf8”);
$SQLgetParea=“从学生中选择*”;
$SQLgetPareaResult=mysqli_查询($conn$SQLgetParea);
$SQLgetPareaRow=mysqli\u fetch\u数组($SQLgetPareaResult,mysqli\u ASSOC);
$getSub=$SQLgetPareaRow['subject'];
$sql2=“选择quiziz.*,学生们*
来自基齐兹
内部连接学生
关于quiziz.dept=学生.dept
和quiziz.subject=“$getSub.”;
$result2=mysqli_查询($conn,$sql2);
而($row2=mysqli\u fetch\u数组($result2,mysqli\u ASSOC)){
回声“
  • “$row2[‘问题’]”
  • “$row2['ans1']”
  • “$row2['ans2']”
  • “$row2['ans3']”
  • “$row2['ans4']”
  • "; } } }
    要为每个用户提取不同的问题,请创建一个问题表,并为要向用户显示的每个问题分配一个id


    之后,您只需要创建一个带有随机函数的向量,从数据库中按id获取这些问题。将列问题从quizes更改为question_id,它是最近创建的表的外键

    要为每个用户获取不同的问题,请创建一个问题表,并为要向用户显示的每个问题分配一个id


    之后,您只需要创建一个带有随机函数的向量,从数据库中按id获取这些问题。将列问题从quizes更改为question_id,它是最近创建的表的外键

    您是否已检查$getSub是否为空?请提供要执行的SQL和表中的表行。亲爱的@k3rn3llp4n1c我有一些错误,其已修复ok我将这行代码替换为这行代码,但仍然需要为每个用户提出不同的问题,有什么想法吗?这看起来像是糟糕的设计:-(回答了问题。您是否检查了$getSub是否为空?请提供要执行的SQL和表中的表行。亲爱的@k3rn3llp4n1c我有一些错误,已修复ok,我将替换此行代码


    用这句话



    但仍然需要为每个用户提出不同的问题,有什么想法吗?这看起来像是糟糕的设计:-(回答了。这正是我想要的,谢谢你的建议:)这对我有很大帮助#接受了我想要的,谢谢你的建议:)这对我帮助很大