PHP从包含3个联接的2个表输出数据

PHP从包含3个联接的2个表输出数据,php,mysql,join,output,relational,Php,Mysql,Join,Output,Relational,希望你能帮忙 我有3个表文章文章\u关键字\u链接关键字 他们结合在一起,我想实现一篇文章显示在页面上,但显示所有相关的关键字,这是链接到文章 我还没有格式化这个页面,我只是想让功能正常工作 SELECT article.article_id, article.article_title, article.article_content, keywords.keyword_name FROM article JOIN article_keyword_link ON article.article

希望你能帮忙

我有3个表
文章
文章\u关键字\u链接
关键字

他们结合在一起,我想实现一篇文章显示在页面上,但显示所有相关的关键字,这是链接到文章

我还没有格式化这个页面,我只是想让功能正常工作

SELECT article.article_id, article.article_title, article.article_content, keywords.keyword_name
FROM article
JOIN article_keyword_link ON article.article_id = article_keyword_link.article_id
INNER JOIN keywords ON article_keyword_link.keyword_id = keywords.keyword_id
在Phpmyadmin中运行上述查询,我收到了这些结果

Query Output from PhpmyAdmin
+------------+---------------+-------------------+--------------+
| article_id | article_title |  article_content  | keyword_name |
+------------+---------------+-------------------+--------------+
|          1 | Article 1     | Article 1 content | CCU          |
|          1 | Article 1     | Article 1 content | WIFI         |
|          1 | Article 1     | Article 1 content | Network      |
|          2 | Article 2     | Article 2 content | Passenger    |
|          2 | Article 2     | Article 2 content | Application  |
+------------+---------------+-------------------+--------------+
下面是表格的填充方式

Table: article
+------------+---------------+-------------------+
| article_id | article_title |  article_content  |
+------------+---------------+-------------------+
|          1 | Article 1     | Article 1 content |
|          2 | Article 2     | Article 2 content |
+------------+---------------+-------------------+
页面来源:

<?php

include 'includes/db.php';

// Create connection
$conn = new mysqli($host, $username, $password, $database);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "

SELECT article.article_id, article.article_title, article.article_content, keywords.keyword_name
FROM article
JOIN article_keyword_link ON article.article_id = article_keyword_link.article_id
INNER JOIN keywords ON article_keyword_link.keyword_id = keywords.keyword_id

";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "Article ID: " . $row["article_id"] . "<br>";
        echo "Article Title: " . $row["article_title"] . "<br>";
        echo "Article Content: " . $row["article_content"] . "<br>"
;
    }
} else {
    echo "0 results";
}
$conn->close();
?>

所以我面临两个问题。
1.如何在显示与该文章相关的所有关键字的同时,检索一篇文章以显示在页面上
2.如何调整源代码以显示关键字?如果我在循环中为关键字_name添加一个新的echo,页面将不会加载


如果您对此有任何帮助,我们将不胜感激

您就快到了,试试这个

选择article.article\u id、article.article\u title、article.article\u content、group\u concat(关键字.关键字\u name)作为关键字
从文章
在article.article\u id=article\u关键字\u link.article\u id上加入article\u关键字\u链接
文章上的内部连接关键字\u关键字\u链接。关键字\u id=关键字。关键字\u id
按文章分组。文章\u id
有关用于实现此目的的函数的信息。请看


此外,如果您只想要一篇文章,请在查询末尾添加
limit 1
。如果你想要最新的/最旧的,你可以为最新的添加
按文章排序\u id DESC LIMIT 1
,为最旧的添加
按文章排序\u id ASC LIMIT 1
,这样我可以看到当我在phpmyadmin中运行这个时,它会显示独特的文章和它;当我把它放在源代码中并回显输出“关键字”时,它仍然在做同样的事情,但它没有加载页面。当我把它粘贴到源代码中时,这是一个错误。非常感谢!
Table: keywords
+------------+--------------+
| keyword_id | keyword_name |
+------------+--------------+
|          1 | CCU          |
|          2 | WIFI         |
|          3 | Passenger    |
|          4 | Application  |
|          5 | Software     |
|          6 | Hardware     |
|          7 | Network      |
+------------+--------------+
<?php

include 'includes/db.php';

// Create connection
$conn = new mysqli($host, $username, $password, $database);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "

SELECT article.article_id, article.article_title, article.article_content, keywords.keyword_name
FROM article
JOIN article_keyword_link ON article.article_id = article_keyword_link.article_id
INNER JOIN keywords ON article_keyword_link.keyword_id = keywords.keyword_id

";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "Article ID: " . $row["article_id"] . "<br>";
        echo "Article Title: " . $row["article_title"] . "<br>";
        echo "Article Content: " . $row["article_content"] . "<br>"
;
    }
} else {
    echo "0 results";
}
$conn->close();
?>

Article ID: 1
Article Title: Article 1
Article Content: Article 1 content
Article ID: 1
Article Title: Article 1
Article Content: Article 1 content
Article ID: 1
Article Title: Article 1
Article Content: Article 1 content
Article ID: 2
Article Title: Article 2
Article Content: Article 2 content
Article ID: 2
Article Title: Article 2
Article Content: Article 2 content