PHP + MySQL:如何按类别获取帖子列表?

时间:2018-11-25 11:56:53

标签: php mysql sql

我对PHP和MySQL还是很陌生。我有一个表格,用于将文章与类别相关联。

Table "posts_categories":

`postId - catId
178 4
177 4
176 4
175 4
174 4
171 4
170 4
169 4
168 4
167 4
166 4
165 4
164 4
163 4
162 4
151 3
150 3
149 3
147 3
1   1`

在文章170“ post.php?Id = 170”的页面上,我需要列出同一类别中的所有文章。我只需要显示职位名称即可。如何列出类别4中的所有帖子?

我的SQL代码是:

SELECT post_title
FROM posts_categories
INNER JOIN articles ON posts_categories.postId = articles.ID
INNER JOIN cursos ON posts_categories.catId = cursos.catId
WHERE posts_categories.postId ='" . $id . "' 

非常感谢

1 个答案:

答案 0 :(得分:0)

您的查询首先有几个问题

INNER JOIN articles ON posts_categories.postId = post.ID 

应该是

INNER JOIN articles ON posts_categories.postId = articles.ID

第二,要使所有帖子与输入帖子属于同一类别,您需要将WHERE条件更改为:

WHERE posts_categories.catId = (SELECT catId FROM posts_categories WHERE postId = '" . $id . "')

所以您的查询应该是:

SELECT post_title
FROM posts_categories
INNER JOIN articles ON posts_categories.postId = articles.ID
INNER JOIN cursos ON posts_categories.catId = cursos.catId
WHERE posts_categories.catId = (SELECT catId FROM posts_categories WHERE postId = '" . $id . "')

请注意,此查询将使您可以进行SQL注入(请参阅此question)。至少应该检查$id是纯数字值(可以使用is_numeric),但理想情况下,应该使用准备好的语句。