如何在PHP查询中第二次停止相同的数据显示?



我尝试开发考试管理系统。我不要一样 问题或相同的 ID 未显示第二次或其他任何时间考试 a 用户。如何给出这个条件?

我的函数是:

public function qustionShow($question, $limit=4){
$show = $this->conn->query("select * from question where cat_id ='$question' ORDER BY RAND() LIMIT $limit");
while ($row=$show->fetch_array(MYSQLI_ASSOC)){
$this->qus[]=$row;
}
return $this->qus;  
}

您需要跟踪已经提出的问题。 如果您不希望仅为会话再次选择问题,则可以将问题 ID 保存到会话中。

您可以将数组初始化为会话 $_SESSION['questions_asked'] = array((; 然后一旦提出问题,你会

array_push([THE QUESTION ID], $_SESSION['questions_asked']);

当然,对于提出的任何问题,您需要将[问题ID]替换为SQL ID。

请记住,您需要修改查询以考虑会话中保存的任何内容。

如果您不希望它们再次显示,则需要记录用户看到了哪些问题,并且可能需要将其永久存储在数据库中。

也许你可以有一个表来存储每个用户的那些

user_question_asked

至少具有这 2 列

[user_id][question_id]

因此,每次提出问题时,您都会插入当前用户 ID 和问题 ID

那么你的查询可能是

SELECT * FROM question where cat_id ='$question' AND [QUESTION_ID] NOT IN 
(SELECT question_id from  user_question_asked where user_id [CURRENT USER's ID] 
) ORDER BY RAND() LIMIT $limit;`

希望有帮助,我不确定您的表/列结构是什么,但这是我解决此问题的一些建议。

最新更新