【问题标题】:How to compare two responses in php?如何比较php中的两个响应?
【发布时间】:2020-04-24 00:02:47
【问题描述】:

我在数据库中有两个表,questionsuser_answers 都有 questionId 字段。我想比较用户是否回答了问题中的所有问题。每次用户回答问题时,都会在 user_answers 表中添加一个新行,其中包含其帐户的 userId 和其帐户的 questionId他们刚刚回答的问题。我考虑过比较 questions 表的所有 questionId 是否已由 user_answers 中的用户 userId 回答> 表。我希望我已经很好地解释了这个概念。

我考虑过查询 questions 表并返回一个包含所有 questionId 的数组,然后再查询 user_answers 表,其中包含与用户 userId 关联的所有 questionId,即当时登录的用户。

我试图做某事,但我不知道如何继续:

<?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 很陌生。如果有人能想到比比较两个数组更好的方法,我将不胜感激。

我打算在另一篇文章中问这个问题,但因为这是一个简短的问题......一旦我有了两个数组,我如何比较用户没有的 questionId回答了?例如,如果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]

数据库图片

问题表

(抱歉,问题是西班牙语,但重要的是 questionId)

questions table

user_answers table

例如,userId 1 回答了问题 1、2 和 3,他需要回答问题 5 和 6。如何获取他需要回答的 questionId?

【问题讨论】:

  • 你能提供一个你想要的数组中的值的例子吗?
  • @MelvynMarigny 完成 :)

标签: php mysql


【解决方案1】:

我想出了如何从 userId 1 获取未回答的问题,这很简单:

SELECT questionId FROM questions EXCEPT SELECT questionId FROM user_answers;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-21
    • 2020-03-24
    • 2019-05-02
    • 2011-04-20
    • 2011-07-27
    • 1970-01-01
    • 2010-10-31
    相关资源
    最近更新 更多