【问题标题】:PHP or MySQL is fetching all rows from the tags table and not just what the intermediary term_tags table says it shouldPHP 或 MySQL 正在从 tags 表中获取所有行,而不仅仅是中间 term_tags 表所说的
【发布时间】:2015-10-27 07:56:24
【问题描述】:

我有 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 对我来说看起来不错,但我对加入还是有点陌生​​。

有点帮助?​​

【问题讨论】:

  • 你必须添加加入条件“tags.tag_id=term_tags.tag_id”

标签: php mysql


【解决方案1】:

您的 sql 查询将如下所示:

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

【讨论】:

    【解决方案2】:

    像这样使用内部连接:-

    SELECT tag_name FROM tags inner JOIN term_tags on
    tags.tag_id=term_tags.tag_id WHERE term_id = ?
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-13
      • 2014-04-24
      • 1970-01-01
      • 2013-05-12
      • 2014-01-14
      • 1970-01-01
      • 1970-01-01
      • 2014-11-27
      相关资源
      最近更新 更多