如何在php中比较数组与数据库

时间:2011-09-14 12:00:18

标签: php mysql arrays foreach

如果你们大家可以帮我解决这个问题。我试图用php建立一个问题。

表:

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] - >如果答案是正确的,那就算一算。

我的问题是 如何将这两个数组与数据库进行比较

  1. '$ all_ids'是数据库表的id。
  2. '$ all_answers'就是答案。
  3. $ 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++;   
            }       
    
        }
    }
    

    我希望我的问题有道理:)

2 个答案:

答案 0 :(得分:1)

使用php的 implode 功能将ID粘合在一起:implode(",", $all_ids); 然后你可以使用它来创建一个数据库查询(如cularis所说)并迭代这些结果进行检查(如亚马逊所说)

更多信息:

答案 1 :(得分:1)

将您的两个答案数组更改为如下所示:

$answers[82] = 1
$answers[83] = 4

foreach($answers as $id => $ans)
{
$sql = "select * from quiz where id_quiz = $id"
db->query($sql)
$row = $check->fetch_assoc();
if($row['answer'] == $ans)
{
  totalcorrect++
}

}

这是一个快速回答,不确定您是否需要更多细节?