Php 获取主题id上的类别

Php 获取主题id上的类别,php,mysql,Php,Mysql,因此,我希望在主题的id上显示类别名称。 现在我有这个 $cato = $db->prepare('SELECT topics.topic_cat, topics.topic_id, categories.cat_id, categories.cat_name

因此,我希望在主题的id上显示类别名称。 现在我有这个

        $cato = $db->prepare('SELECT
                        topics.topic_cat,
                        topics.topic_id,
                        categories.cat_id,
                        categories.cat_name
                    FROM
                        topics
                    LEFT JOIN
                        categories
                    ON
                        topics.topic_cat = categories.cat_id
                    WHERE
                        topics.topic_id =:topid');

$cato->bindParam(':topid',  $row2["topic_id"], PDO::PARAM_INT); 
$cato->execute();
$result2 = $cato->fetch();
类别。类别id
是类别的id

Categories.cat_name
是我想要的名称

Topics.topic\u cat
是发布主题的类别id(与categories.cat\u id中的id相同)

Topics.topic\u id
是主题的id(
topic.php?id=28

我的成绩需要提高

主题28属于类别hello(hello=
categories.cat\u name

因此,简而言之:主题id是28,它在主题中搜索具有
topic\u id
28的行,并获取与
topic\u id
28位于同一行的topic\u cat。然后在类别中查找并获取
categories\u name
is
topic\u cat
。然后发布
categories\u name

我希望我足够清楚。

你能试试:

SELECT topics.topic_cat,
       topics.topic_id,
       categories.cat_id,
       categories.cat_name
FROM topics, categories
WHERE topics.topic_cat = categories.cat_id
      AND topics.topic_id =:topid

除非你有没有类别的主题,否则这应该有效。

你有没有未分类的主题?@makciook仅在索引中显示全部,如果你是这个意思的话?我想问的是,为什么你
加入类别表,而不仅仅是
加入
?这意味着您要列出的主题中有一些没有类别ID。@makciook表示害怕。我不知道。在其他脚本仍然有效的情况下,join:x听起来很愚蠢,我知道如何根据您的代码显示结果(很抱歉我的问题),您可以执行
$result2=$cato->fetch(PDO::fetch_ASSOC)
然后要获取类别名称,您需要
echo$result2['cat\u name']
。如果对此不确定,则
print\r($result2)
进行调试。获取
致命错误:在第
$result2=$cato->fetch(PDO::fetch_ASSOC)中对非对象调用成员函数fetch()
这意味着查询失败,你能用phpmyadmin这样的工具调试上面的查询吗?它正在工作!只需将
:topid
更改为变量
$row2[“topic\u id”]
谢谢!