PHP SQL回显行问题

时间:2018-09-28 16:33:48

标签: php sql mysqli

我正在尝试从表中回显圆顶数据,但是由于某种原因,它仅回显了两个结果。可能是因为sub_parent下只有两个可能的数字。我希望它会回显所有6行,但只将它们分组?任何想法出了什么问题吗?

<?php
require_once 'db/db.php';

$sql = "SELECT *
FROM main_menu_sub
GROUP BY sub_parent
ORDER BY id
";

$result = $con->query($sql);
$con->close();
?>

<?php
    if ($result->num_rows > 0) {        
        while($row = $result->fetch_assoc()) {
        ?>
            <li><a href="<?php echo $row["Sub_menu_url"]; ?>"><?php echo $row["Sub_menu_title"]; ?></li>



            <?php
                }

                    }
            ?>

1 个答案:

答案 0 :(得分:2)

您想要的是ORDER BY,而不是GROUP BYGROUP BY的意思是将所有具有相同sub_parent值的行合并为单个行。通常将其与MAX()COUNT()等聚合函数结合使用,以汇总组中的所有行。

所以您的查询应该是:

SELECT *
FROM main_menu_sub
ORDER BY sub_parent, id

这会将具有相同sub_parent的所有行放在一起,并在每个组中按id进行排序。

如果要显示每个sub_parent组的标题,请参见How can i list has same id data with while loop in PHP?,以获取一种在sub_parent发生更改时打印标题的技术。