【问题标题】:Queries to print questions and their choices查询打印问题及其选择
【发布时间】:2010-11-22 17:10:45
【问题描述】:

我正在 PHP+MySQL 中进行调查/多项选择。到目前为止,我已经创建了两个表:问题和选择。每个问题都有一个唯一的主键 question_id,每个选项都有一个外键 question_id。

我想打印一个包含所有问题及其相应选项的列表。我的 PHP 有点生锈,所以我不记得正确的方法了。我是否只运行查询以选择所有问题,并运行查询以选择每个问题的选项?或者可以通过一个查询来完成吗?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    您需要执行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);
    

    这将输出/创建一个问题数组,带有子数组的选择。

    【讨论】:

    • 答案是怎么回事?我只是希望它打印可能选择的问题,因为它是一个多项选择。
    • @Matt,请看修订版
    【解决方案2】:

    以下查询应返回所有问题:

    SELECT questions.*,choices.* from questions 使用 (question_id);

    然后遍历结果,例如将有关选项的所有必要数据复制到由 question_id 键入的数组中;然后使用此数据结构构建表单小部件等。

    不确定这是否是您要查找的内容 - 很难在不知道您遇到问题的情况下提供更有帮助的回复。

    【讨论】:

      猜你喜欢
      • 2018-05-23
      • 2018-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多