php - 简单的 PHP MySQL 查询分组任务

标签 php mysql

我想使用 PHP 和 jQuery 创建一个测验,问题和答案存储在数据库表中。以下是存储在我的数据库表中的值的示例:

Question | Answer | Correct
What color is an apple? | red | 1
What color is an apple? | yellow | 2
What color is an apple? | blue | 2

这是我的查询...

$stm = $pdo->prepare("SELECT Q.URL, Q.Question, Q.Answer, Q.Correct
 FROM 1_quiz Q");
$stm->execute(array(
 'MyURL'=>$MyURL
));

while ($row = $stm->fetch())
{
 $URL = $row['URL'];
 $Question = $row['Question'];
 $Answer = $row['Answer'];
 $Correct = $row['Correct'];

$Q1[] = '<div id="'.$URL.'" style="">'.$Question.'
<div><input type="radio" name="'.$Question.'" id="" value="" />
<label for="">'.$Answer.'</label></div>
</div>';
}

echo join ($Q1, '');

正如预期的那样,它显示以下内容:

What color are apples?
red
What color are apples?
yellow
What color are apples?
blue
Where is Paris?
Russia
Where is Paris?
Alaska
Where is Paris?
France

如何修改代码,使其显示如下,每个问题仅显示一次?:

What color are apples?
red
yellow
blue

我尝试了 GROUP BY Q.Question 和 GROUP BY Q.Answer,但这些都不起作用。

显而易见的答案是将问题存储在单独的数据库表中,我最终可能被迫这样做。不过,我想尝试将所有内容都保存在一个电子表格/数据库表中,因为这样更容易管理。

最佳答案

移至新表是最好的选择,但您仍然可以在这里实现您想要的目标。

您将需要两个查询,在第一个查询中您会得到不同的问题列表,例如:

$stm2 = $pdo->prepare("SELECT distinct Q.URL, Q.Question FROM 1_quiz Q"); 
$stm2->execute(array('MyURL'=>$MyURL));

然后你将有两个循环,外层循环只循环问题。内部循环使用与问题中相同的查询,但从外部循环中过滤当前问题的答案。

关于php - 简单的 PHP MySQL 查询分组任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27714820/

相关文章:

php - 是否可以在 Drupal 和 ASP&SQL Server 平台之间集成用户数据库?

php - 如果在 SQL 查询中合并 Sum,以及 Yii ActiveRecord

java - Wso2 数据服务 - 更新操作问题

php - 使用 PHP 从 SQL 表中进行选择并从结果中删除特定前缀

mysql - `column` 是一个有效的 mysql 列名吗?

php - 使用数据列填充下拉列表并获取用户选择的项目

php - Yii 框架 :Form builder

php - 如何最大限度地减少需要以不同间隔分组的查询的负载?

mysql - 如何按日期时间列对表进行分区?

mysql - 我可以在用户定义的函数中使用子查询吗