我对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 . "'
非常感谢
答案 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
),但理想情况下,应该使用准备好的语句。