PHP逻辑 - 为每个Inside While循环复制MySQL查询中的项目

时间:2014-03-29 16:46:54

标签: php html mysql

在这种情况下,我有点麻烦。我有3个表,典型的tagposttag_post映射表。

我有一个显示帖子的页面,基本上只是查询SELECT * from POST,然后在这些结果的while语句中我查询SELECT tag_id FROM tag_post WHERE post_id = ? ?post_id来自父while循环。我也有这个父循环中每个帖子的HTML。

我从第二个查询中获取tag_id值,然后在我的HTML中降低,创建一个额外的foreach ($tagIds as $tag) {}以从标记表中获取tag_name值。

我的问题是,每次循环运行时,都包含来自最近迭代的标记。所以我的第二篇文章包含了第一篇文章中的所有标记,第三篇文章包含了所有这三种标记。我知道我的问题是我运行了两次HTML,但正如我所说,我无法理解如何纠正这个。

我采取了太多步骤吗?能不能比我做得更有效率呢?

如果需要,我可以发布代码。

1 个答案:

答案 0 :(得分:2)

您可以通过一个查询获得所有必需的数据:

"SELECT p.* FROM post p
INNER JOIN tag_post tp ON (tp.post_id = p.id)
INNER JOIN tag t ON (t.id = tp.tag_id)
WHERE p.post_id = ?"

我猜你当前正在某些数组中累积数据而你不会清空tags数组。因此,在每次迭代中,新标签始终会添加到该列表中。