首先让我说我编写 PHP 代码是一种业余爱好,但了解的并不多。也就是说,我在想出一种执行特定类型查询的聪明方法时遇到了麻烦。
假设我有一个动态测验应用程序,该应用程序使用三个不同科目的试题数据库; 200 代数,100 历史,50 科学。用户可以选择他们希望在测验中包含哪些主题和多少个主题,还可以选择将在测验中包含多少个问题。
下面是我现在使用的工作代码...
$sql = "SELECT *
FROM quiz
WHERE keyword LIKE '$algebra'
OR keyword LIKE '$history'
OR keyword LIKE '$science'
ORDER BY RAND() LIMIT $amount";
然而,此代码的唯一问题是,如果我在测试中选择 10 个问题,我将主要有代数问题,一些历史问题,没有科学问题。我希望它能平等地代表每个选定的主题。
我想在这个项目中我可能已经忍无可忍了。
最佳答案
只是一个猜测:
$equal = $amount/3; // do your best to round this...
$sql = "SELECT * FROM quiz WHERE keyword LIKE '$algebra' ORDER BY RAND() LIMIT $equal
UNION
SELECT * FROM quiz WHERE keyword LIKE '$history' ORDER BY RAND() LIMIT $equal
UNION
SELECT * FROM quiz WHERE keyword LIKE '$science' ORDER BY RAND() LIMIT $equal";
关于php mysql返回可变数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28652407/