php - 循环遍历一个表,每条记录都有另一个循环
问题描述
我有一个包含类别的表和另一个包含每个类别的链接记录的表,表结构如下所示:
类别:
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 方法,但不知道怎么做!
解决方案
以下查询将用于检索与链接类别相关的链接。此外,最好在查询中指定字段名称以仅检索特定列而不是 *。
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;
推荐阅读
- scikit-learn - 使用 PolynomialFeatures 时的系数是什么意思?
- javascript - 未捕获的 SyntaxError:地址栏中带有 javascript 的意外标识符
- botframework - Microsoft Bot - 在将用户输入注入机器人之前对其进行操作
- c# - 根据一个条件将列表拆分为两个列表的最有效方法是什么?
- java - 2个标准输出源 - 中断写入问题
- android-studio - 如何在Url中发布字符串类型的数据?
- c++ - 有没有办法在 boost dijkstra 算法期间减轻 IndexInHeapMap 初始化?
- solidity - 铸造代币时的众售合同问题
- javascript - Chart.js StackedBar 不显示条上的标签和最大 y 值
- python - Pytest mock - 在上下文管理器中输入 __enter__ 时返回其他对象?