2012-06-27 46 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;