Как сравнить массив с базой данных в php - PullRequest
1 голос
/ 14 сентября 2011

если вы, ребята, можете помочь мне с этой проблемой.я пытаюсь построить анкету с 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' - это идентификатор таблицы базы данных.
  2. '$ all_answers' - это ответы.

$ all_ids [82] == ($ all_answer [1] -> сравнить ответ с базой данных для идентификатора 82)
$ all_ids [83] == ($ all_answer [4] -> сравнить ответ с базой данных для идентификатора 83)
$ all_ids [84] == ($ all_answer [1] -> сравнить ответ с базой данных для идентификатора 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 ]

1 голос
/ 15 сентября 2011

Измените два массива ответов на один, например:

$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++
}

}

Это быстрый ответ, не уверен, что вам нужно больше подробностей?

1 голос
/ 14 сентября 2011

Используйте функцию php's implode , чтобы склеить идентификаторы: implode(",", $all_ids); Затем вы можете использовать это для создания одного запроса к БД (как сказал Cularis) и перебирать результаты для проверки (как сказал Мэтт)

подробнее:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...