【发布时间】:2010-11-22 17:10:45
【问题描述】:
我正在 PHP+MySQL 中进行调查/多项选择。到目前为止,我已经创建了两个表:问题和选择。每个问题都有一个唯一的主键 question_id,每个选项都有一个外键 question_id。
我想打印一个包含所有问题及其相应选项的列表。我的 PHP 有点生锈,所以我不记得正确的方法了。我是否只运行查询以选择所有问题,并运行查询以选择每个问题的选项?或者可以通过一个查询来完成吗?
【问题讨论】:
我正在 PHP+MySQL 中进行调查/多项选择。到目前为止,我已经创建了两个表:问题和选择。每个问题都有一个唯一的主键 question_id,每个选项都有一个外键 question_id。
我想打印一个包含所有问题及其相应选项的列表。我的 PHP 有点生锈,所以我不记得正确的方法了。我是否只运行查询以选择所有问题,并运行查询以选择每个问题的选项?或者可以通过一个查询来完成吗?
【问题讨论】:
您需要执行JOIN。
一些伪 SQL:
select * from
(Select question_id, question_text from table_questions) questions
join
(Select parent_question_id, choice_text from table_choices) choices
on
questions.question_id=choices.parent_question_id
您必须根据您的设置更改上述内容 - 您可能还需要不同的 JOIN type
在 PHP 中连接到数据库后,您可以这样运行结果:
$sql="select * from
(Select question_id, question_text from table_questions) questions
join
(Select parent_question_id, choice_text from table_choices) choices
on
questions.question_id=choices.parent_question_id";
$result=mysql_query($sql);
while ($db_field = mysql_fetch_assoc($result)) {
$question_and_answers[$db_field['question_text']][]=$db_field['choice_text'];
}
print_r($question_and_answers);
这将输出/创建一个问题数组,带有子数组的选择。
【讨论】:
以下查询应返回所有问题:
SELECT questions.*,choices.* from questions 使用 (question_id);
然后遍历结果,例如将有关选项的所有必要数据复制到由 question_id 键入的数组中;然后使用此数据结构构建表单小部件等。
不确定这是否是您要查找的内容 - 很难在不知道您遇到问题的情况下提供更有帮助的回复。
【讨论】: