2014-09-19 84 views
-2

请原谅我的英语。我使用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); 
} 

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

+1

为什么每个单词都以大写字母开头? – CMPS 2014-09-19 02:10:04

+0

@PHPglue:是的,它的工作。我说使用MVC及其清晰! – AbbasHosseini 2014-09-19 02:16:09

+0

为什么它是'$ this-> db-> prepare()'?你是否创建了自己的具有'$ db'属性的类,该属性具有自己的'prepare()'方法? – PHPglue 2014-09-19 02:17:25

回答

0

如果您想查询返回的商品标签的列表,你可以使用这样的事情

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 

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

相关问题