【发布时间】:2015-11-08 03:09:29
【问题描述】:
我有两个表,一个包含发布到博客页面的文章,第二个表包含这些文章的 cmets。
我正在使用下面的函数来JOIN 这些并显示来自两者的数据。
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 INNER JOIN article_comments
ON blog.content_id = article_comments.comment_id
-- WHERE blog.content != '' AND article_comments.comment_id != ''
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>" .
"<hr class='artline'>" .
"<div class='commented_by'>" . $row['comment_by'] . "</div>" .
"<div class='comments'>" . $row['comments'] . "</div>";
}
我遇到的问题是,每当用户插入新的博客文章时,它都不会显示在网页上。如果我在另一个表中插入评论(按 ID 匹配),则该文章看起来很好。即使没有关联的 cmets,如何显示这些文章?
我试过-- WHERE blog.content != '' AND article_comments.comment_id = '' OR article_comments.comment_ID = ''但是没有效果
另外,您能否告知是否有更好的方法来定位这些而不是通过 ID?
【问题讨论】:
-
如果每个表中的相关列是
content_id -> comment_id,则通过ID加入它们是正确的。但是当article_comments表中的关系不满足时,需要一个LEFT JOIN来允许该行返回。