0

我试图让我的文章获取它有多少评论,并显示数量。这是代码:

<?php
$amount_get = mysql_query("SELECT * FROM comment WHERE id='" . mysql_real_escape_string($_GET['articleid']) . "'"); 
$comments = mysql_num_rows($amount_get);

$grab = mysql_query("SELECT id, news_title, news_content, news_date, news_author FROM articles ORDER BY id DESC LIMIT 5");

while($row = mysql_fetch_array($grab)){
?>


<div class="pane">
    <li>               
        <h2><?php echo $row['news_title'] ?></h2>
        <div class="meta">
            <span class="color"> &bull; </span>
            <?php echo $row['news_date'] ?>
            <span class="color"> &bull; </span>
          </div>

          Comments: <?php echo $comments ?>

但由于某种原因,它保持在“0”。这是它的样子:在此处输入图像描述

我的列是 id、articleid、name、comment、date & ip。

4

3 回答 3

0

您的 where 子句正在寻找 id = articleid。

你想要的是articleid = articleid。

$amount_get = mysql_query("SELECT * FROM comment WHERE articleid='" . mysql_real_escape_string($_GET['articleid']) . "'"); 
于 2013-03-04T16:01:50.273 回答
0

看起来 SQL 有问题。检查您的 articleid GET 变量。它也不应该对每篇文章的评论进行不同的查询和 mysql_num_rows,因为每篇文章可能包含不同数量的评论。

尝试这个:

SELECT 
  articles.id, news_title, news_content, news_date, news_author 
  (SELECT COUNT(*) FROM comment WHERE comment.id=articles.id) as comments
FROM articles 
ORDER BY id DESC LIMIT 5

这将为您提供前 5 篇文章及其相关评论计数。

于 2013-03-04T16:05:14.767 回答
0

您可以只使用一个查询。

$grab = mysql_query(
"SELECT a.id, a.news_title, a.news_content, a.news_date, a.news_author, count(*) as comment_count
FROM articles a 
LEFT JOIN comment c ON c.articleid = a.id 
ORDER BY a.id DESC LIMIT 5 GROUP BY a.id");

然后代替

Comments: <?php echo $comments ?>

做:

Comments: <?php echo $row['comment_count']; ?>

让我知道查询是否有效,我不确定 Group by 是否正确放置在那里。

于 2013-03-04T16:07:37.253 回答