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

时间:2018-09-07 21:49:14

标签: 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=$show->fetch_array(MYSQLI_ASSOC)){
        $this->qus[]=$row;
    }
    return $this->qus;  
}

1 个答案:

答案 0 :(得分:1)

您需要跟踪已经问过的问题。您可以将问题ID保存到会话中,如果您不想再次为会话选择问题。

您可以初始化会话的数组     $ _SESSION ['questions_asked'] = array(); 然后问了一个问题

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

对于任何被问到的问题,您当然都需要用sql id替换[QUESTION ID]

请记住,您需要修改查询以解决会话中保存的所有内容。

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

可能您可以有一个表来存储每个用户的表

user_question_asked

至少包含这两列

[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;`

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

相关问题