如何在php查询中再次停止相同的数据显示?

如何在php查询中再次停止相同的数据显示?,php,mysql,Php,Mysql,我尝试开发考试管理系统。我不想要同样的 问题或同一id未显示第二次或其他任何时间的考试 使用者这个条件怎么能给出呢 我的职能是: public function qustionShow($question, $limit=4){ $show = $this->conn->query("select * from question where cat_id ='$question' ORDER BY RAND() LIMIT $limit"); while ($row=

我尝试开发考试管理系统。我不想要同样的 问题或同一id未显示第二次或其他任何时间的考试 使用者这个条件怎么能给出呢

我的职能是:

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保存到会话中

您可以初始化会话的数组 $\u会话['questions\u asked']=array; 一旦有人问你问题,你就会

array_push([THE QUESTION ID], $_SESSION['questions_asked']);
当然,对于任何问题,您都需要将[QUESTION ID]替换为sql 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;`

希望这能有所帮助,我不确定您的表/列结构是什么,但这些是我为解决此问题而提出的几点建议。

不同和/或分组方式请进一步/更详细地解释您的要求。您是否提供多页的考试?您是否为多名学生提供考试;与其他学生相比,每个学生需要回答完全不同/独特的问题?你能给我们展示一下sqlfiddle来演示这个问题吗?