【问题标题】:How to get all tags belonging to the article?如何获取属于文章的所有标签?
【发布时间】:2023-04-05 00:14:02
【问题描述】:

请原谅我的英语。我使用 MVC 架构和 PHP 创建了一个基于标签的网站。它工作正常。当用户单击标签时,查询会提供该标签的所有信息。例如,用户点击“PHP”标签,查询显示所有具有“PHP”标签的文章。这是我的查询

    public function get($Getlabel){
    $tagLabel = $this->db->prepare("select `txtcenter`.`id`, `title`, `imagurl`, `writer`, `dttime`, `txtmain`, `counter`,
                                              `tags`.`tag` as tagsshow
                                            from `txtcenter`
                                              INNER  join `taglink` on `taglink`.`txtcenterid` = `txtcenter`.`id`
                                              INNER  join `tags` on `tags`.`id` = `taglink`.`tagid`
                                            where `tags`.`tag` in (:Label)
                                            ");
    $tagLabel->execute(array('Label' => $Getlabel));
    return $tagLabel->fetchAll(PDO::FETCH_OBJ);
}

现在让我们解释一下我的问题。我希望每篇文章的所有标签也都属于下面,并在上面进行编辑查询。

【问题讨论】:

  • 为什么每个单词都以大写字母开头?
  • @PHPglue:是的,它的工作。我说使用 MVC 和它的清晰!!!!
  • 为什么是$this->db->prepare()?您是否创建了自己的具有$db 属性的类,该属性具有自己的prepare() 方法?
  • 是的,我创建标签类和 __construct(PDO $db) 从控制器标签获取数据
  • 我在查询中的问题!不是 Php 代码,我认为 mybe 使用 id 代替标签 (:Label) 谁能给我一个想法?

标签: php mysql tags


【解决方案1】:

如果你想在查询中返回文章标签列表,你可以使用类似这样的东西

    select tbl.*,
GROUP_CONCAT(DISTINCT tags.tag SEPARATOR ',') As all_tags
from(
select `txtcenter`.`id`, `title`, `imagurl`, `writer`, `dttime`, `txtmain`, `counter`,
`tags`.`tag` as tagsshow, `taglink`.`tagid`
from `txtcenter`
INNER  join `taglink` on `taglink`.`txtcenterid` = `txtcenter`.`id`
INNER  join `tags` on `tags`.`id` = `taglink`.`tagid`
where `tags`.`tag` in (:Label)
) tbl
inner join tags  
on tags.id=tbl.tagid
GROUP BY tbl.id

这个查询应该可以工作,我没有运行它,因为我没有你的表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多