php mysql返回可变数量

标签 php mysql sql random

首先让我说我编写 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/

相关文章:

php - 对图像使用 Jquery 自动完成

php - 生成 Wordpress 页面子级的标题和缩略图列表

php - 有没有比事务更高效的方法?

sql - Rails first_or_create 添加 (1=2) 到查询

php - Swift 字符串(格式 :array:) joins strings instead of composing them

PHP Excel记录显示到网页中

python - 无法将字符串插入 MySQL 表

java - 获取插入后所有自动生成的值

mysql - 以IN子查询的顺序对查询结果进行排序

sql - 如何使用不同的自定义生成的主键 SQL Server 插入重复记录