PHPで間違った回答のリストを作成することにより、各質問の間違った回答を取得しようとしています。たとえば、元のクエリから単一の行を含めて、次のように間違った答えを計算します。
$query = "SELECT q.SessionId, s.SessionName, q.QuestionId, q.QuestionNo, an.Answer, an.AnswerId
FROM Session s
INNER JOIN Question q ON s.SessionId = q.SessionId
JOIN Answer an ON q.QuestionId = an.QuestionId
WHERE s.SessionName = ?
ORDER BY q.QuestionId, an.Answer
";
// prepare query
$stmt=$mysqli->prepare($query);
// You only need to call bind_param once
$stmt->bind_param("s", $assessment);
// execute query
$stmt->execute();
$specialOptionTypes = array(
'Yes or No' => array( 'Y', 'N' ),
'True or False' => array( 'T', 'F' ),
);
// Do this for each row:
if ( array_key_exists( $row->OptionType, $specialOptionTypes ) ) {
$options = $specialOptionTypes[ $row->OptionType ];
} else if ( preg_match( '/^([A-Z])-([A-Z])$/', $row->OptionType, $match ) ) {
$options = range( $match[1], $match[2] );
} else {
// issue warning about unrecognized option type
$options = array();
}
$right = str_split( $row->Answer ); // or explode() on a delimiter, if any
$wrong = array_diff( $options, $right );
// Fetch the results into an array
// get result and assign variables (prefix with db)
$stmt->bind_result($dbSessionId, $dbSessionName, $dbQuestionId, $dbQuestionNo, $dbAnswer, $dbAnswerId);
while ($stmt->fetch()) {
$incorrect_ans[] = $wrong;
}
....
//table row
<td class="answertd" name="incorrectanswers[]"><?php
echo $incorrect_ans[$key];
?></td>
私が抱えている問題は、間違った答えが得られないことですが、代わりにいくつかのエラーが発生することです:
最初のエラーは、$row
上記のコードに示されている変数に対するものです。
Notice: 未定義の変数: 行中 ... 行中 ...
Notice: 行中 ... で非オブジェクトのプロパティを取得しようとしています ...
2 番目の問題は、不正解を表示する代わりに上の表の行にあり、 と表示されますArray
。
私の質問は、通知と配列を修正して、少なくともエラーのないアプリケーションを作成するにはどうすればよいですか?