PHP或MySQL从标签表中获取所有行,而不仅仅是中介term_tags表所说的行


PHP or MySQL is fetching all rows from the tags table and not just what the intermediary term_tags table says it should

我有3个表:

  • 术语:(term_id…)
  • 标签:(tag_id,tag_name);以及
  • term_tags(term_id,tag_id)

term_tags是一个中间表,在terms和tags表中分别对term_id和tag_id有几个外键约束。

我正试图使用下面的PHP代码来提取与给定术语id相关联的标签。

    <?php
    include('includes/config.php');
    $sql = "SELECT tag_name FROM tags JOIN term_tags WHERE term_id = ?";
    $stmt = $db->prepare($sql);
    if($stmt->execute(array($_GET['id']))){
        while($row = $stmt->fetch()){
            echo $row['tag_name'], "<br />";
        }
    }
    ?>

发生的情况是,所有的行都是从标签表中提取的,我只想要与给定的术语id相关联的标签。我不确定这是我的SQL语句还是我的PHP,PHP对我来说很好,但我还是一个新手。

帮个忙?

您的sql查询将如下所示:

SELECT tag_name FROM tags INNER JOIN term_tags 
ON tags.tag_id=term_tags.tag_id 
WHERE term_id = ?

像这样使用内部联接:-

SELECT tag_name FROM tags inner JOIN term_tags on
tags.tag_id=term_tags.tag_id WHERE term_id = ?
相关文章: