【发布时间】:2011-09-14 12:00:17
【问题描述】:
如果你们能帮我解决这个问题。我正在尝试用 php 构建一个 questionere。
表:
id_quiz question answer
82 q1 1
83 q2 4
84 q3 1
85 q4 4
我有两个数组;
1. $all_ids = [82,83,84,85]
2. $all_answers = [1,4,1,4] -> 如果答案正确,则计算它们。
我的问题是如何将这两个数组与数据库进行比较?
- '$all_ids' 是数据库表的 id。
- '$all_answers' 是答案。
$all_ids[82] ==($all_answer[1] -> 将答案与 id 82 的数据库进行比较)
$all_ids[83] == ($all_answer[4] -> 将答案与 id 83 的数据库进行比较)
$all_ids[84] == ($all_answer[1] -> 将答案与 id 84 的数据库进行比较)
我当前的代码似乎不起作用:
$total_correct = 0;
foreach ($all_ids as $ids){
$check = $db->query("SELECT * FROM quiz WHERE id_quiz='$ids' ");
$row = $check->fetch_assoc();
foreach($all_answers as $answers) {
if($row['answer'] == $answers) {
$total_correct++;
}
}
}
我希望我的问题有意义:)
【问题讨论】:
-
我有点困惑。当您不需要时,您会一遍又一遍地查询数据库。您应该能够获取整个表并从中创建一个数组。然后遍历 ids 检查答案。您可以做的另一件事是构建查询以包含您需要的所有问题,因此您只需查询一次,然后可能使用 php array_diff 比较数组。
-
查询数据库一次。
SELECT * FROM quiz WHERE id_quiz IN (1,2,3,4)($all_ids) 并遍历结果,就像马特解释的那样。 -
@cularis:我有点困惑为什么你的 cmets 没有答案。 :)
-
@cularis 谢谢。有点困惑。你能写下简短的答案吗:)。不太明白你的意思
-
把表定义给我们,我给你写php/sql