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

csbfibhn  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(263)

我尝试开发考试管理系统。我不希望同一个问题或同一个身份证不显示第二次或其他任何时候考试的用户。怎么能给这个条件?
我的职能是:

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;  
}
yi0zb3m4

yi0zb3m41#

你需要记录哪些问题已经被问过了。如果您不希望仅为会话再次选择问题,则可以将问题id保存到会话中。
您可以将数组初始化为会话$\u session['questions\u asked']=array();一旦有人问你问题

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

当然,对于任何问题,都需要用sql id替换[question id]
请记住,您需要修改查询以说明会话中保存的任何内容。
如果您不想再次显示这些问题,则需要记录用户看到的问题,并可能需要将这些问题永久存储在数据库中。
可能您可以为每个用户设置一个表来存储这些内容
用户问题
至少有这两列
[用户id][问题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;`

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

相关问题