我尝试开发考试管理系统。我不想要同样的 问题或相同 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;
}
最佳答案
您需要跟踪已经提出的问题。如果您不希望仅为 session 再次选择问题,您可以将问题 ID 保存到 session 中。
你可以初始化一个数组到 session 中 $_SESSION['questions_asked'] = array(); 然后一旦有人问你问题,你就会
array_push([THE QUESTION ID], $_SESSION['questions_asked']);
当然,无论提出什么问题,您都需要将 [THE QUESTION ID] 替换为 sql id
请记住,您需要修改查询以考虑 session 中保存的任何内容。
如果您不希望再次显示它们,您需要记录用户已经看到的问题,并且可能需要将其永久存储在数据库中。
也许你可以有一个表来存储每个用户的这些信息
用户问题询问
至少有这两列
[用户 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;`
希望有所帮助,我不确定您的表/列结构是什么,但这些是我解决此问题的一些建议。
关于php - 如何在php查询中停止第二次显示相同的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52230005/