如何在php中比较两个响应



我在数据库中有两个表,questionsuser_answers都有questionId字段。我想比较用户是否回答了问题中的所有问题。每次用户回答问题时,都会在user_answers表中添加一个新行,其中包括其帐户的userId和他们刚刚回答的问题的questionId题表的所有问题Id是否已由user_answers表格中的用户

userId我曾考虑过对questions表进行查询,并返回一个包含所有questionId的数组,然后对user_answers表格进行另一次查询,其中包含与用户userIduestionId,即当时登录的用户。

我试着做点什么,但我不知道如何继续:

<?php
session_start();
include 'connection.php';
include 'URLS.php';
$question_sql = "SELECT questionId FROM questions;";
$question_result = mysqli_query($connection, $question_sql);
$question_row = mysqli_fetch_array($pregunta_result);
$answer_sql = "SELECT questionId FROM user_answers WHERE userId = `$_SESSION['userId']`";
$answer_result = mysqli_query($connection, $answer_sql);
$answer_row = mysqli_fetch_array($answer_result);
?>

我不知道如何获得一个包含所有questionId的数组,对不起,我对php还很陌生。如果有人能想出比比较这两个阵列更好的方法,我将不胜感激

我本来打算在另一篇帖子中问这个问题,但由于这是一个简短的问题。。。一旦我有了这两个数组,我如何比较用户没有回答的问题Id?,例如,如果questionquestionId[1, 2, 3, 4, 5],而userId1已经回答了[2, 4, 5],它如何保存在另一个数组[1, 3]中?也许用array_diff()

很抱歉问了这么长的问题,但我有点绝望。提前谢谢。

示例

问题表

question_id:[1,2,3,4,5,6,7](每个数字是不同的问题(

users_answers表

user_id:[247](用户登录(

question_id:[1,3,5,6](用户回答的问题(

数组中的每个数字都是不同的行

所以,我想要一些类似$unanswered_questions = [2, 4, 7]的东西

数据库映像

问题表

(对不起,问题是西班牙语的,但重要的是问题ID(

问题表

user_answers表

例如,userId 1回答了问题1、2和3,他需要回答问题5和6。我怎样才能得到他需要回答的问题?

我发现了如何从userId 1中获得未回答的问题,这很简单:

SELECT questionId FROM questions EXCEPT SELECT questionId FROM user_answers;

最新更新