PHP MySQL 分成输出

标签: MySQL PHP
发布时间: 2017/4/9 22:58:23
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图用 PHP 和 MySQL,我只是不能绕过我的头做一些事情。

我有一个表,采用以下结构 (他们是两个表,但将作为一个人,当他们在 SQL 查询中加入)︰

id | brand  | model  
1  | brand1 | model1  
2  | brand1 | model2  
3  | brand1 | model3  
4  | brand2 | modelA  

我已经能够让 PHP 输出以下罚款︰

brand1 model1  
brand1 model2  
brand1 model3  
brand2 modelA  

我真的很想能做到的是它作为输出︰

Brand1  
Model1  
Model2  
Model3  

Brand2  
ModelA  

任何人有任何的想法?

这是我当前的代码︰

<?php 
$result = mysql_query("SELECT cameras.cameraid, cameras.model, brands.brand FROM cameras JOIN brands ON cameras.brandid=brands.brandid WHERE cameras.categoryid='$cat' ORDER BY brands.brand ASC, cameras.level ASC")or die(mysql_error());

while($row = mysql_fetch_array($result))
{
     echo "<li><a href='camera.php?id=". $row['cameraid'] . "'>" . $row['brand'] . " " . $row['model'] . "</a></li>";
}

?>

解决方法 1:

你要找是一个二维数组与嵌套 foreach -循环。这将允许您有一个数组,它看起来像这样

Array ( 
    [brand1] => Array ( 
        [1] => model1 
        [2] => model2 
        [3] => model3 
    ) 
    [brand2] => Array ( 
        [4] => modelA 
        [5] => modelB 
        [6] => modelC 
    ) 
)

当我们是后来回显模型列表的每个品牌,我们用这对我们有利。第一个数组将包含所有的品牌,而每个品牌都是自己-创建两个二维数组,其中包含所有的模型 (和产品 Id 作为该数组中的元素的键) 数组。

将每个元素放入数组在你 while($row = mysql_fetch_array($result)) -循环,并使用嵌套 foreach -循环,回显出来。

while ($row = mysql_fetch_array($result)) {
    // Here we fetch all the results, and put it into a two-dimentional array 
    // with keys as brandname and the ID of the product
    $brands[$row['brand']][$row['cameraid']] = $row['model'];
}

// Then we echo them all out in a list!
foreach ($brands as $key=>$brand) {
    // The $key is the name of the brand
    echo $key."<ul>";
    foreach ($brand as $id=>$model) {
        // The $id is the ID of the camera in the table
        // The $model is the model-name itself
        echo "<li><a href='camera.php?id=".$id."'>".$model."</a></li>";
    }
    echo "</ul>";
}

此外,已弃用,并不推荐,使用 mysql_* 函数,你应该考虑转移到 mysqli_*PDO 更好的功能,不断支持与更好的安全性。

官方微信
官方QQ群
31647020