php中使用RAND()进行双重选择

php中使用RAND()进行双重选择,php,mysql,Php,Mysql,请帮我解决这个问题。我正在构建一个考试系统,并使用Rand()函数从“问题”表中选择问题。用户的答案也保存在“用户答案”表中 现在,我的问题是一个问题有时会被选中两到三次,因此我需要一个查询来检查如果一个问题已经在“user\u answer”表中得到了回答,它应该从“question”表中重新选择另一个问题。您不能用Rand()直接排除 如果从数据库中查询,可以添加以下内容 select * from question q left join user_answer ua on ua.ques

请帮我解决这个问题。我正在构建一个考试系统,并使用Rand()函数从“问题”表中选择问题。用户的答案也保存在“用户答案”表中


现在,我的问题是一个问题有时会被选中两到三次,因此我需要一个查询来检查如果一个问题已经在“user\u answer”表中得到了回答,它应该从“question”表中重新选择另一个问题。

您不能用Rand()直接排除

如果从数据库中查询,可以添加以下内容

select *
from question q
left join user_answer ua on ua.question_id = q.id
where ua.id is null
group by q.id
这将尝试连接到一个答案(任何答案,您可能想在其中添加一些用户选择),并且只在失败时(ua.id为null)返回问题

如果您不能通过查询来完成,并且无法在某个PHP数组中完成所有任务,那么您可以做的是跟踪数组中可用的问题ID。每次随机选择一个问题时,都会从数组中删除该项(值!),并重新为数组编制索引(保留值,即问题ID,并将键从0排序到问题数-1)

这样,您可以再次执行rand(0,count($questionId))来选择下一个


另一种方法是使用循环,只要选择的问题已经在used questions数组中,就继续执行。

您现在使用的代码是什么?因此,没有代码。好吧,你有一个“神奇”的答案在下面;问问他们。如果那不行,你猜怎么着?是的,这里的关键词是“猜测”,这就是你的问题所围绕的。