首页 > 解决方案 > 循环遍历一个表,每条记录都有另一个循环

问题描述

我有一个包含类别的表和另一个包含每个类别的链接记录的表,表结构如下所示:

类别:

id (int)
name (varchar)

链接:

id (int)
link (varchar)
fk_cat_id (int)

这是我现在的做法,但要知道在查询中使用查询是不行的:

$query = "SELECT * FROM categories";
if ($result = $mysqli->query($query)) {
    while ($row = $result->fetch_assoc()) { 
        $catid = $row['cat_id'];

        echo 'CatName: '.$row['name'];
        echo '<ul>';

        $query2 = "SELECT * FROM links WHERE fk_cat_id = $catid";
        if ($result2 = $mysqli->query($query2)) {
            while ($row2 = $result2->fetch_assoc()) { 
                echo '<li>'.$row2['link'].'</li>';
            }
        }

        echo '</ul>';

    }
}

我想我必须去一些 JOIN 方法,但不知道怎么做!

标签: phpmysqljoin

解决方案


以下查询将用于检索与链接类别相关的链接。此外,最好在查询中指定字段名称以仅检索特定列而不是 *。

SELECT links.id AS link_id, links.link, links.fk_cat_id, categories.name
FROM links
JOIN categories ON categories.id = links.fk_cat_id;

推荐阅读