如何使用PHP将MySQL数据行放在适当的标题下?

如何使用PHP将MySQL数据行放在适当的标题下?,php,mysql,group-by,sql-order-by,Php,Mysql,Group By,Sql Order By,我有以下MySQL表结构: num field company phone website 1 Gas abcd 123456789 abcd.com 2 Water efgh 987654321 efgh.com 3 Water ijkl 321654987 ijkl.com 4 Heat mnop 987654321 mnop.com 5 Gas qrst 123789654 qrst.com ... 是否可以使用PHP

我有以下MySQL表结构:

num field company phone     website

1   Gas   abcd    123456789 abcd.com
2   Water efgh    987654321 efgh.com
3   Water ijkl    321654987 ijkl.com
4   Heat  mnop    987654321 mnop.com
5   Gas   qrst    123789654 qrst.com
...
是否可以使用PHP(可能混合使用
GROUP\u BY
ORDER\u BY
)以以下格式将数据回送到屏幕上:

Gas:
abcd       qrst
123456789  123789654
abcd.com   qrst.com

Water:
efgh       ijkl
987654321  321654987
efgh.com   ijkl.com

Heat:
mnop
321654987
mnop.com
它的确切格式并不重要。我只需要在适当的字段下列出不同的数据行,并且不重复任何字段。我已经试着弄清楚这一点有一段时间了,但我对PHP还不熟悉,我似乎不知道如何做,如果可能的话,或者是否有更好的方法来组织我的数据以使其更简单。

为了避免执行“气体”查询、“水”查询和“热量”查询,可以按“字段”排序结果然后用PHP处理显示

SELECT
    Field,
    Company,
    Phone,
    Website
FROM
    tblYourTable
ORDER BY
    Field
在PHP循环中,您需要在当前“字段”上保留选项卡,并在其更改时启动一个新列表。例如:

$CurrentField = '';

... loop

if ($MyData->Field != $CurrentField) {
    $CurrentField = $MyData->Field;
    ....
}

... end loop

我假设您知道如何将MySQL数据检索到数组中。。。因此,我们有:

[0] {
    num => 1,
    field => "Gas",
    company => "abcd",
    phone => "123456789",
    website => "abcd.com"
    }
[1] ... (so on)
然后创建一个循环,如:

foreach($data as $row) {
   $service = $row["field"]; //Water, Gas, etc...
   unset($row["field"]); //do not add this
   foreach($row as $key => $value) {
       $field[$service][$key][] = $value;
   }
}
生成的数组类似于:

$field["Gas"]["company"][0] = "abcd";
$field["Gas"]["company"][1] = "qrst";
$field["Water"]["company"][0] = "efgh";
...
$field["Gas"]["phone"][0] = "123456789";
$field["Gas"]["phone"][1] = "123789654";
$field["Water"]["phone"][0] = "987654321";
...
这样,您就可以生成输出:

foreach($field as $service => $infoarr) {
   echo $service."\n";
   foreach($infoarr as $info => $datarr) {
       foreach($datarr as $datum) {
          echo $datum."\t"; 
       }
       echo "\n";
   }
   echo "\n";
}
理论上(未经测试)将输出:

Gas 
abcd qrst 
123456789 123789654 

Water 
efgh ...
我希望你觉得它有用。。。应该有更好的办法,但我没想到
太多了…

Ahhh是的,这是有道理的。谢谢!没问题-很高兴我能帮忙。我也喜欢这种方法!另一个看起来会更快更简单,但是如果我遇到任何严重的问题,我会尝试一下。