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

标签 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;  
}

最佳答案

您需要跟踪已经提出的问题。如果您不希望仅为 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/

相关文章:

mysql - SQL 错误 (1064) 语法 MariaDB

python - 执行很多问题,MySQLdb

php - 我需要一些帮助(注册表系统)- php+mysql

php - 请帮助我创建一个提交表单,该表单可以提交并保留在同一页面上。

php - 使用端口连接时从 URL 获取所有 header

php - SQL查询从3个表中选择多对多

mysql - 分解一个非常长的 MySQL 查询是否更好?

php - PDO 无法选择大量记录

javascript - Angular 返回包​​含在 [] 中的数组值

php - 为什么我的 MySql 查询运行两次?