2011-04-29 53 views
1

數我使用這個代碼,所以我可以指望的評論數爲每篇文章計數的意見(PHP/MySQL的)

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

,當用戶輸入一個數comment..the變化而自動

有人幫助我的代碼 或是否有另一種方式做到這一點

我知道這是一個長期的問題 但我一直在試圖解決這個問題的like..forever

感謝名單

+0

你想要的是一個觸發器http://dev.mysql.com/doc/refman/5.0/en/triggers.html – 2013-06-23 18:22:14

回答

2

你可以設置一個TRIGGER,每加一個註釋時更新註釋伯爵表。或者,您可以在評論頁面中簡單地在INSERT查詢後面添加UPDATE查詢。

0

節約的意見,嘗試:

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

或尋找MySQL的觸發器。

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); 
+0

謝謝你對我的幫助...把我有問題說「mysql_num_rows()期望參數1是資源「 – 2011-04-29 23:32:25

+0

給你一個近距離大聲笑,但你應該改變它爲mysql_num_rows($查詢); – Ascherer 2011-04-29 23:42:42

+0

從技術上講,您不需要將編號存儲在任何地方,只需在該頁面上顯示該編號即可。 「有<?= $ number_Of_Comments?>」。 – Ascherer 2011-04-29 23:43:39

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()不能很好地擴展,速度可能很慢,通常可以避免。
  • 查找表爲應用程序增加了不必要的複雜性。

應始終避免觸發器。他們創造了「魔術」條件 - 您的數據庫可以在您不知情的情況下進行更改。觸發器通常比代碼更難改變。

0

你要求sql服務器在同一時間選擇一切和計數ID,使用其中之一,並給它一個接近的位置,賓果!