计算评论数量(php / mysql)

时间:2011-04-29 22:11:24

标签: php mysql count comments

我正在使用此代码,因此我可以计算每篇文章的评论数量

SELECT *, COUNT(comment_id) as count
FROM article_comments
WHERE article_id =colname
GROUP BY article_id

这是我的评论表看起来像

http://i54.tinypic.com/2cdu3dk.png

我想将这些号码保存在另一个表格中(文章表格......文章旁边的每个数字),就像这样

http://i54.tinypic.com/2dgm82u.png

当用户输入评论时......号码自动更改

有人帮我提供代码 或者如果有其他方法可以做到这一点

我知道这是一个很长的问题 但是我一直试图解决这个问题。比如.forever

感谢名单

5 个答案:

答案 0 :(得分:2)

您可以设置TRIGGER,每次添加评论时都会更新评论计数表。或者,您只需在评论页面中UPDATE查询后立即添加INSERT查询。

答案 1 :(得分:1)

$query = mysql_query("SELECT * FROM article_comments WHERE article_id =".$youarticleId);

//the number of comments is :
$number_Of_Comments = mysql_num_rows($query);

//save it to another table

$query2 = mysql_query("UPDATE yourTable set numberOfComments =".$number_Of_Comments);

答案 2 :(得分:1)

您可能不需要查找表。 1篇文章有很多评论。因此,请构建您的评论表之类的内容(添加文章字段);

id | article | content
-------------------------
1  | 1       | Comment 1 for article 1.
2  | 1       | Comment 2 for article 1.
3  | 2       | Comment 3 for article 2. 

显示文章时,请使用以下查询列出评论;

SELECT a.id, a.content FROM articles a WHERE a.article = :myArticleId

创建新评论时:

INSERT INTO comments (article, content) VALUES (:currentArticleId, :content)
UPDATE article SET commentCount = commentCount + 1 WHERE article = :currentArticleId

文章表看起来像这样;

id | commentCount | content
------------------------------
1  | 0            | Article with 0 comments.
2  | 3            | Article with 3 comments.

这需要你做一些工作,但它比缺点有更多的好处。


您提出的解决方案有两大缺点;

  • SQL中的COUNT()不能很好地扩展,并且可能很慢,通常可以避免。
  • 查找表为您的应用程序增加了不必要的复杂性。

也应始终避免触发器。它们创造了“神奇”条件 - 您可以在不知情的情况下更改数据库。触发器通常比代码更难改变。

答案 3 :(得分:0)

关于保存评论,请尝试:

  update table_where_you_count_the_comments set number_of_comments = number_of_comments +1 where article_id = theID limit 1;

或寻找mysql触发器。

答案 4 :(得分:0)

你要求sql服务器同时选择所有内容和计数id,使用其中一个并给它一个关闭的地方,宾果!