【问题标题】:Join + While loop only outputting one resultJoin + While 循环只输出一个结果
【发布时间】:2012-11-15 07:21:15
【问题描述】:

我正在尝试进行测验并使用以下内容来比较结果,它似乎可以工作并输出一次,但仅此而已,即使有两个问题,我也没有处理更多记录测验,所以它应该输出正确,正确或正确,不正确等。

          <?php
    // Make a MySQL Connection
    // Construct our join query
    $query = "SELECT * FROM itsnb_chronoforms_data_answerquiz a, itsnb_chronoforms_data_createquestions
    q WHERE a.quizID='$quizID' AND a.userID='$userID' and q.quizID=a.quizID and
    a.quizselectanswer = q.correctanswer" or die("MySQL ERROR: ".mysql_error());

    $result = mysql_query($query) or die(mysql_error());


    // Print out the contents of each row into a table 
    while($row = mysql_fetch_array($result)){
        if ($row['correctanswer'] == $row['quizselectanswer']){
            echo 'CORRECT';}
            else { echo 'INCORRECT';
            }

        echo "<br />";
    }
    ?>

编辑>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>

表结构如下>>

itsnb_chronoforms_data_answerquiz cf_id、cf_uid、cf_created、cf_modified、cf_ipaddress、cf_user_id、questionID、quizselectanswer、quizID、userID

itsnb_chronoforms_data_createquestions cf_id、cf_uid、cf_created、cf_modified、cf_ipaddress、cf_user_id、quizID、questionID、quizquestion、quizanswer1、quizanswer2、quizanswer3、quizanswer4、问题格式、正确答案

【问题讨论】:

  • 您在查询和 php 中复制逻辑...查询只会返回正确的答案,然后您检查答案是否在 php 中正确。例如您的 php 永远不会显示“不正确”,因为只会返回正确的记录。
  • 即使我删除了 IF 语句,我仍然只能得到一行
  • 不,您应该从查询中删除 a.quizselectanswer = q.correctanswer 部分,这样您就会得到正确和错误的答案。
  • 你能不能把这个查询运行到mysql数据库中,看看你得到了多少结果
  • 如果我删除 a.quizselectanswer = q.correctanswer,我会得到 INCORRECT INCORRECT INCORRECT CORRECT,但只有两条记录...... :-S

标签: php mysql join while-loop


【解决方案1】:

删除 selectanswer=correctanswer 条件后,您会得到四个答案(这确实不是您想要的,因为您想同时获取正确和错误的答案),因为您没有关联答案 ID。

$query = "SELECT * FROM itsnb_chronoforms_data_answerquiz a, itsnb_chronoforms_data_createquestions
q WHERE a.quizID='$quizID' AND a.userID='$userID' and q.quizID=a.quizID and
a.quizselectanswer = q.correctanswer" or die("MySQL ERROR: ".mysql_error());

应该是:

$query = "SELECT * FROM itsnb_chronoforms_data_answerquiz a, itsnb_chronoforms_data_createquestions
q WHERE a.quizID='$quizID' AND a.userID='$userID' and q.quizID=a.quizID and
a.questionID = q.questionID" or die("MySQL ERROR: ".mysql_error());

在没有该条件的情况下,您会得到 questionID 的叉积。您看到的四个记录(如果 questionID 是 1 和 2):

  1. a.questionID=1 和 q.questionID=1
  2. a.questionID=1 和 q.questionID=2(不希望这样)
  3. a.questionID=2 和 q.questionID=1(或这个)
  4. a.questionID=2 和 q.questionID=2

【讨论】:

  • 感谢您的帮助,已解决! :-)
猜你喜欢
  • 2011-09-26
  • 1970-01-01
  • 2016-09-14
  • 2018-10-09
  • 2021-09-24
  • 2020-04-28
  • 2013-10-27
  • 2014-07-17
  • 1970-01-01
相关资源
最近更新 更多