我正在参加一些在线课程,并在其中一项练习中为博客创建两个表格 - 博客文章和博客文章 - 并通过外键连接它们,然后显示所有内容来自两者的内容。评论应该仅与特定文章相关联,同时也允许多个评论。在PHP中显示和链接外键内容
我尝试:
function list_articles() {
include('core/db/db_connection.php');
$sql = "SELECT blog.title, blog.content, blog.posted_by, blog.date, article_comments.comments, article_comments.comment_by
FROM blog LEFT OUTER JOIN article_comments
ON blog.content_id = article_comments.content_id
WHERE blog.content != ''
ORDER BY blog.content_id DESC";
$result = mysqli_query($dbCon, $sql);
while ($row = mysqli_fetch_array($result)) {
echo
"<h5 class='posted_by'>Posted by " . $posted_by = $row['posted_by'] . " on " . $row['date'] . "</h5>" .
"<h1 class='content_headers'>" . $title = $row['title'] . "</h1>" .
"<article>" . $content = $row['content'] . "</article>" .
"<div class='commented_by'>Posted by: " . $row['comment_by'] . "</div>" .
"<div class='comments'>Comments: " . $row['comments'] . "</div>";
}
}
这就是我如何在数据库中插入注释:
function insert_comments($comment_by, $comments) {
include('core/db/db_connection.php');
$sql = "SELECT blog.content_id, article_comments.blog_id
FROM blog AS blog
INNER JOIN article_comments AS article_comments ON article_comments.blog_id > blog.content_id";
mysqli_query($dbCon, $sql);
}
在phpMyAdmin外键的作品好吗和评论链接到一个特定的文章。我想在网页上转置它。当我在页面上插入新文章时,它可以正常工作,但当我尝试插入该文章的评论时,它将不会显示它。
如果我将ON blog.content_id = article_comments.content_id
更改为ON blog.content_id = article_comments.blog_id
(blog_id是外键的字段名称) - 它将显示文章的所有评论 - 但它会为与其关联的每个评论重复该文章。这有任何意义吗?我试着尽我所能解释它..如果您需要进一步澄清,请让我知道。由于
顺便说一句,这是我用来创建外键的语句:
ALTER TABLE article_comments ADD CONSTRAINT comment_blog_fk FOREIGN KEY (blog_id) REFERENCES wt.blog(content_id) ON DELETE NO ACTION ON UPDATE CASCADE;
编辑:结果我用ON blog.content_id = article_comments.blog_id
Article title: LOREM IPSUM
Content: LOREM IPSUM DOLOR SIT AMET....
--------------------------------------
Name: DSK
Comment: Great article!
-- HERE IT DUPLICATES THE ARTICLE TO INSERT A NEW COMMENT --
Article title: LOREM IPSUM
Content: LOREM IPSUM DOLOR SIT AMET....
--------------------------------------
Name: DSK
Comment: Great article! - 2nd comment
,你可以得到看到它会复制插入的每条评论的文章。所以我最终得到两个重复的文章,持有不同的评论。如果如果我有100篇评论,文章都会复制100次
行为我期待:
Article title: LOREM IPSUM
Content: LOREM IPSUM DOLOR SIT AMET....
-------------------------------------- \\ COMMENTS \\
Name: DSK
Comment: Great article!
--------------------------------------
Name: DSK
Comment: Great article! - 2nd comment
我在你的问题只看到** SELECT **,但没有人** INSERT **。所以当你插入数据时,或者当你选择时有问题? –
@DanilaGanchar现在,我直接通过数据库接口插入数据,直到我弄清楚如何正确显示它,因此我的代码中没有INSERT语句。所以,我的问题在于展示它。在数据库中,评论与文章正确关联。我在页面上显示它们的方式似乎是问题所在。我选择评论或文章的方式很可能存在问题。 – Dominique
你可以打印你的结果从数据库和你的期望? –