首页 > 解决方案 > 如何使用 php 检索数据类别明智?

问题描述

我有一个产品表,其中包含三列IDProductCategory

我想像这样明智地检索我的产品类别..

类别1

产品1

产品2

产品3

产品4

类别2

产品1

产品2

产品3

产品4

类别3

产品1

产品2

产品3

产品4

我试过这个...

<?php
require_once('config.php');
$conn = mysqli_connect($servername, $username, $password, $dbname);

$sql = "SELECT * FROM `products` WHERE status = 1";

$result = $conn->query($sql);

if (@$result->num_rows > 0) 
{
    while($row = $result->fetch_assoc())
    {
        $category = $row['category'];
        $name = $row['name'];

        foreach ($row as $category) 
        {
            echo $name."<br/>";
        }
    }
}
?>

但它重复每个产品多次......

请帮忙 !

标签: phpmysql

解决方案


您可以尝试循环遍历结果,同时记录最后遇到的类别。请参阅下面的代码(未经测试):

<?php
require_once('config.php');
$conn = mysqli_connect($servername, $username, $password, $dbname);

$sql = "SELECT * FROM `products` WHERE status = 1 ORDER BY category ASC, name ASC";

$result = $conn->query($sql);

if (@$result->num_rows > 0) 
{
    $previous_category = ""   // To keep track of the last printed category
    while($row = $result->fetch_assoc())
    {
        $category = $row['category'];
        $name = $row['name'];

        if ($previous_category !== $category) { // If this category has never been printed, we print it
            echo $category."<br/>";
            $previous_category = $category;
        }

        echo $name."<br/>";
    }
}
?>

希望能帮助到你 :)


推荐阅读