2010-05-02 63 views
2

我需要从MySQL表tabled中检索数据(车辆详细信息),然后遍历结果为每个车辆类别生成单独的列表。有没有简单的方法来做到这一点,而不必为每种类型的车辆都有一个SELECT语句?根据列中的数据分离MySQL SELECT语句

如果我只是做这一个类别,我会用以下内容:

<?php 
$sql = "SELECT * FROM apparatus WHERE vehicleType = 'Support'; 
$getSQL = mysql_query($sql); 
?> 

<ul> 
<?php while ($vehicleData = mysql_fetch_assoc($getSQL)) {?> 
<li><?php echo $vehicleData['name'];?></li> 
<?php } ?> 
</ul> 

...等。需要为四种不同类型的车辆执行此操作。

谢谢!

回答

4

大厦马克的回答,您可以选择所有车辆,并重新安排你的结果在PHP设置:

<?php 
    $sql = "SELECT * FROM apparatus ORDER BY vehicleType"; 
    $getSQL = mysql_query($sql); 
    // transform the result set: 
    $data = array(); 
    while ($row = mysql_fetch_assoc($getSQL)) { 
    $data[$row['vehicleType']][] = $row;  
    } 
?> 
<?php foreach ($data as $type => $rows): ?> 
    <h2><?php echo $type?></h2> 
    <ul> 
    <?php foreach ($rows as $vehicleData):?> 
    <li><?php echo $vehicleData['name'];?></li> 
    <?php endforeach ?> 
    </ul> 
<?php endforeach ?> 
+0

我有一种感觉,需要一个数组,但我不知道如何实现它。非常感谢 :) – NightMICU 2010-05-02 20:55:04

2

您可以使用此:

SELECT * FROM apparatus 
WHERE vehicleType IN ('foo', 'bar', 'baz', 'qux') 
ORDER BY vehicleType 

这将返回所有四个车型,很好的分组,方便迭代。如果你想要所有的车辆类型,你不需要WHERE子句。

+0

好,谢谢!但是有一个问题 - 我将如何使用这个SELECT语句来遍历每种车型? – NightMICU 2010-05-02 19:33:03

+0

你不会 - 你一次又一次地循环整个集合,并且要小心注意车辆类型是否改变。但是我不会为这种额外的复杂性而烦恼,除非性能对你来说真的是一个关键问题。 – 2010-05-02 19:47:11

+0

我试图在页面的不同部分为同一页上的每种车辆生成UL。这将需要循环遍历表中该车型的每个匹配行,如我的示例中所示。因此,我需要从表格中检索所有细节,然后根据车辆类型将其组织在页面的不同部分。 – NightMICU 2010-05-02 19:50:50