0

以下のwhileクエリの内容を取得して、phpスクリプトの他の場所で使用する方法はありますか?私がやろうとしているのは、クイズから答えを集めて、それらを正しい答えと比較することです。私が抱えている問題は、答えが1つのテーブルからのものであり、質問が別のテーブルからのものであるため、現在2つの異なるものを実行する必要があります。クエリ中ですが、2番目のクエリで$ quizを使用することはできません。これは、最後に出力された値で固定されたままであるためです。基本的にそれを行おうとしているのはテーブルAをロードし、内部を探してquestionIDそのテーブルを選択し、正しい答えを引き出します。次に、テーブルBをロードし、その中を見て、同じ答えを選択しquestionID、ifステートメントを使用して比較します。if correctanswer=actualanswer=正解で、質問ごとにこれをループします。私が直面している主な問題は、最初の問題ですべての正解をうまく引き出しますが、それを他の方法で比較することもできません。これが正しい方法であるかどうか、またはより良い方法があるかどうかはわかりませんか?

正しい答えを探してください:

      $result0 = mysql_query("SELECT * FROM itsnb_chronoforms_data_createquestions  
                WHERE quizID='$quizID' ORDER BY cf_id ASC");
      while($row0 = mysql_fetch_array($result0))
       {
         $answer = $row0['correctanswer'];
       }

提出された実際の回答を探してください:

  $result = mysql_query("SELECT * FROM itsnb_chronoforms_data_answerquiz 
            WHERE quizID='$quizID' AND userID='$userID' ORDER BY cf_id ASC");

   while($row = mysql_fetch_array($result))
     { 
        $quiz = $row['quizselectanswer']; 
     }
4

2 に答える 2

1

Join はおそらくこれを行うための最良の方法です。ただし、php in_array()-Functionを使用することもできます。

$result0 = mysql_query("SELECT * FROM itsnb_chronoforms_data_createquestions     WHERE quizID='$quizID' ORDER BY cf_id ASC");
while($row0 = mysql_fetch_array($result0))
{
    $answers[] = $row0['correctanswer'];
}

その後

$result = mysql_query("SELECT * FROM itsnb_chronoforms_data_answerquiz WHERE     quizID='$quizID' AND userID='$userID' ORDER BY cf_id ASC");

while($row = mysql_fetch_array($result))
{ 
    if(in_array($row['quizselectanswer'],$answers)){
        ...correct...

        break;
    }
}
于 2012-11-27T14:18:29.870 に答える
1
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

すべての正しい答えを返す必要があります。間違った回答も必要な場合は、2 つのテーブルで外部結合を行う必要があります。

于 2012-11-27T14:12:02.343 に答える