我想使用 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/