我有四个选择,其中两个都是正确答案。
if($isCorrect == "answer1"){
$sql2 = mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer1', '1')")or die(mysql_error());
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer2', '0')")or die(mysql_error());
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer3', '0')")or die(mysql_error());
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer4', '0')")or die(mysql_error());
$msg = 'You questions has been succesfully added!';
header('location: addQuestions.php?msg='.$msg.'');
exit();
}
if($isCorrect == "answer2"){
$sql2 = mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer2', '1')")or die(mysql_error());
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer1', '0')")or die(mysql_error());
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer3', '0')")or die(mysql_error());
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer4', '0')")or die(mysql_error());
$msg = 'You questions has been succesfully added!';
header('location: addQuestions.php?msg='.$msg.'');
exit();
}
if($isCorrect == "answer3"){
$sql2 = mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer3', '1')")or die(mysql_error());
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer1', '0')")or die(mysql_error());
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer2', '0')")or die(mysql_error());
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer4', '0')")or die(mysql_error());
$msg = 'You questions has been succesfully added!';
header('location: addQuestions.php?msg='.$msg.'');
exit();
}
if($isCorrect == "answer4"){
$sql2 = mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer4', '1')")or die(mysql_error());
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer1', '0')")or die(mysql_error());
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer2', '0')")or die(mysql_error());
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer3', '0')")or die(mysql_error());
$msg = 'You questions has been succesfully added!';
header('location: addQuestions.php?msg='.$msg.'');
exit();
}
}
当我运行这些时,只有一个被接受为正确答案。
我的数据库有没有办法接受两个正确答案?我正在使用枚举(0,1)检查正确答案。
稍后可能会有人给出更好的回答,这只是为了让事情顺利进行。
我将首先重构您目前拥有的内容,如下所示:
// note: there are a lot of ways to make the following cleaner (use an array,
// write a function, etc.), but for the sake of time and simplicity I'll
// leave it at this
// if $isCorrect == "answer1", $answer1Correct = '1', else $answer1Correct = '0'
$answer1Correct = ($isCorrect == "answer1" ? '1' : '0');
$answer2Correct = ($isCorrect == "answer2" ? '1' : '0');
$answer3Correct = ($isCorrect == "answer3" ? '1' : '0');
$answer4Correct = ($isCorrect == "answer4" ? '1' : '0');
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer1', $answer1Correct)")or die(mysql_error());
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer2', $answer2Correct)")or die(mysql_error());
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer3', $answer3Correct)")or die(mysql_error());
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer4', $answer4Correct)")or die(mysql_error());
$msg = 'You questions has been succesfully added!';
header('location: addQuestions.php?msg='.$msg.'');
exit();
我不知道你在用sql2做什么,我在这里忽略了它。
到目前为止,这应该与您当前拥有的功能相同
然后,为了进行您想要的更改,我将把$isCorrect从字符串更改为字符串数组。
例如,假设答案1和4都正确:$isCorrect=array('answer1','answer4');
然后使用in\u array(),使$answer1Correct部分变为:
// if "answer1" is in the $isCorrect array, set $answer1Correct to '1', otherwise set it to '0'
$answer1Correct = (in_array("answer1", $isCorrect) ? '1' : '0');
$answer2Correct = (in_array("answer2", $isCorrect) ? '1' : '0');
$answer3Correct = (in_array("answer3", $isCorrect) ? '1' : '0');
$answer4Correct = (in_array("answer4", $isCorrect) ? '1' : '0');
编辑:更多改进
您可以将布尔值转换为整数,然后将其转换为字符串,而不是使用三元运算符(condition?true\u value:false\u value)。
(int)true
返回整数1,而(string)(int)true
返回字符串“1”。
所以你的$答案1正确部分就变成了:$答案1正确=(string)(int)in_array("答案1",$is正确);$答案2正确=(string)(int)in_array("答案2",$is正确);$答案3正确=(string)(int)in_array("答案3",$is正确);$答案4正确=(string)(int)in_array("答案4",$is正确);
但所有这些都有点繁琐,要复制粘贴这么多,一个更简单的选择是用一个函数替换$answer1Correct
:
function answerIsCorrect($answerNumber, $allCorrectAnswers) {
return (string)(int)in_array("answer" . $answerNumber, $allCorrectAnswers);
}
然后您的查询变成:
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', '$answer1', answerIsCorrect(1, $isCorrect)")or die(mysql_error());
现在您可以将整个事情作为循环进行,因此您的整个脚本可以缩短为:
function answerIsCorrect($answerNumber, $allCorrectAnswers) {
return (string)(int)in_array("answer" . $answerNumber, $allCorrectAnswers);
}
$answers = array(
1 => $answer1,
2 => $answer2,
3 => $answer3,
4 => $answer4
)
for($i = 1; $i <= 4; $i++) {
mysql_query("INSERT INTO answers (question_id, answer, correct) VALUES ('$lastId', $answers[$i], answerIsCorrect($i, $isCorrect)")or die(mysql_error());
}
如果将$isCorrect从字符串更改为字符串数组,如上所述。
问题内容: 我有两个查询,如下所示: 我想一次执行两个查询。 但是,然后告诉我如何处理每个单独设置的表。实际上,在ASP.NET中,我们使用数据集来处理两个查询, 如何使用PHP / MYSQL做同样的事情? 问题答案: 更新: 显然可以通过将标志传递给。请参阅使用PHP在一条语句中执行多个SQL查询。尽管如此,任何当前的读者都应避免使用-class函数,而更喜欢PDO。 您无法使用PHP中的常规
问题内容: 我正在运行此查询 但这不是我想要的结果,它返回多行。 我的一张桌子看起来像这个名字: 另一个表看起来像这个名字: 我如何使其选择查询,以便可以从两个表中获取与之相关的所有值,并使它看起来像这样 所需的输出: 谢谢!(提前!) 问题答案: 为您提供所需的输出(但这并不灵活,因此,如果添加要输出的更多详细信息,将无法进行更改而不进行更改):-
问题内容: 以下查询: 什么也不返回。 我应该有足够多的数据来使查询工作。我究竟做错了什么? 问题答案: 您的第二个日期早于您的第一个日期(即,您正在查询2010年9月29日至2010年1月30日之间)。尝试颠倒日期的顺序:
问题内容: 我知道,如果你将装箱的原始整数与常量进行比较,例如: 将自动取消装箱,比较将起作用。 但是,当你比较两个装箱并想比较等于或小于/大于时会发生什么? 上面的代码是否会导致检查它们是否是同一对象,或者在这种情况下会自动拆箱? 关于什么: ? 问题答案: 不,在Integer,Long等之间==,将检查引用是否相等 -即 这将检查是否x并y引用相同的对象而不是相等的对象。 所以 保证可以打印
我有这张桌子 我想根据和来计算反应的数量。我试过这个查询。 谁能告诉我如何正确地做到这一点?
我在Mysql中有一个查询, 我已经完成了简单的查询转换为hibernate查询。我将所有pojo类绑定到表。请指导我如何将多个连接查询转换为一个hibernate查询。