嵌套while循环问题,第二个只循环一次并停止

时间:2014-10-13 10:06:01

标签: php sql while-loop group-by

我有编码问题,我无法自行解决,所以需要你的帮助。

我有两个查询从同一个表中获取数据:

$rs_main_model使用GROUP BY获取所有独特模型

$rs_variant获取所有模型及其各自的选项,即表格中的所有列。

我正在做的是运行一个while循环来列出所有唯一模型 - $rs_main_model,然后在同一个div运行第二个循环中列出来自$rs_variant的所有匹配模型:< / p>

<?php while (!$rs_main_model->EOF)   { ?>                   
        <div>               
            <div>        
                <h2<?php echo $rs_main_model->fields['model']; ?></h2>
            </div>                                    
            <div>      
                      <?php while (!$rs_variant->EOF) { ?>           
                      <?php echo $rs_variant->fields['variant']; ?>
                      <?php $rs_variant->MoveNext(); } ?>
                </div>
        </div>
  <?php $rs_main_model->MoveNext(); } ?>

以下是实际和所需输出的示例:

The output should look something like this: |  However what I end up with is this:    

    Model A    Model A - Variant1           |  Model A    Model A - Variant1   
               Model A - Variant2           |             Model A - Variant2  
               Model A - Variant3           |             Model A - Variant3  
    Model B    Model B - Variant1           |  Model B                    
    Model C    Model C - Variant1           |  Model C          
               Model C - Variant2           |

我应该对while循环进行哪些更改才能使其正常工作? 谢谢!

1 个答案:

答案 0 :(得分:1)

您应该使用$ rs_main_model-&gt; fields ['model']作为条件,在外循环内的每次迭代中更新$ rs_variant结果。请尝试以下

<?php while (!$rs_main_model->EOF)   { ?>                   
    <div>               
        <div>        
            <h2<?php echo $rs_main_model->fields['model']; ?></h2>
   <?php $sql_variant = "SELECT * FROM tbl_catalog WHERE model_body = '".$rs_main_model->fields['model_body']."'"; $rs_variant = $db -> Execute($sql_variant); ?>
        </div>                                    
        <div>      
                  <?php while (!$rs_variant->EOF) { ?>           
                  <?php echo $rs_variant->fields['variant']; ?>
                  <?php $rs_variant->MoveNext(); } ?>
            </div>
    </div>
<?php $rs_main_model->MoveNext(); } ?>