2012-06-27 39 views
0

所以我有一個問題。 我正在聊天/ IM網站,我正在製作一個用戶個人資料頁面。我想顯示用戶有多少帖子。根據返回的行數獲取用戶的帖子數量?

我之前遇到的另一個問題是,當我調用某個值時,它會返回一個'Resource#1'類型的字符串。但我通過使用

$totalposts=mysql_query("SELECT * FROM `posts` WHERE Username='" . $username . "'"); 
$totalposts = mysql_fetch_row($totalposts); 
$totalposts = $totalposts[0]; 

但是,這只是返回最新帖子的最後一個postID。我認爲mysql_num_rows會起作用。但是這個代碼返回一個錯誤(例如帶有號碼):

29: $totalposts=mysql_query("SELECT * FROM `posts` WHERE Username='" . $username . "'"); 
30: $totalposts = mysql_num_rows($totalposts); 
31: $totalposts =mysql_fetch_row($totalposts); 
32: $totalposts = $totalposts[0]; 

返回該錯誤:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in  /home/a9091503/public_html/im/user.php on line 31 

謝謝你們。 :)我希望你能弄清楚這一點。 :d

+2

你爲什麼不查詢使用COUNT(*)。 –

+1

在查詢數據庫之後,不應該在您的num_rows之前? – JohnP

+1

世界上有什麼?您將結果資源分配給'$ totalposts',然後用'num_rows'的結果覆蓋結果資源,然後嘗試在此之後覆蓋它兩次。當然,你在那個時候會得到一個警告,$ totalposts不再是一個結果資源......也許你應該研究變量和任務。 :/ – MetalFrog

回答

1
$res = mysql_query("SELECT COUNT(*) AS `count` FROM `posts` WHERE Username='$username'"); 
$row = mysql_fetch_assoc($res); 
$totalposts = $row['count']; 
+0

謝謝。這也適用。我可能會最終使用你的代碼,因爲我明白了你的觀點。:)我是否很容易顯示我的問題? – transparent

0
$posts=mysql_query("SELECT * FROM `posts` WHERE Username='" . $username . "'"); 
$totalposts = mysql_num_rows($posts); 
print "total posts by user = ".$totalposts 

你可能在你這個查詢的情況下,你要根據評論數顯示註釋的或採取其他行動。 (這將減少多個查詢,如行數之一和內容之一)

如果您只對註釋數量感興趣,請按照上面的答案中的建議中的建議使用以下查詢。

SELECT count(*) FROM `posts` WHERE Username='$username' 
+0

謝謝,夥計。它非常簡單,但我認爲總有一種全新的眼光能夠看到我錯過的東西。 :) – transparent

0

試試這個;

$totalposts=mysql_query("SELECT COUNT(postID) FROM `posts` WHERE Username='" . $username . "'"); 

$totalposts=mysql_query("SELECT COUNT(*) FROM `posts` WHERE Username='" . $username . "'"); 
$result= mysql_query($totalpost); 
$totalposts = mysql_result($result, 0, 0) // return first row and first col 
echo $totalpost;