php / mysql发布COUNT(*)FROM Poll总计是/否

时间:2011-05-19 22:57:24

标签: php mysql count

我正在尝试计算是和否投票,以便我可以为我的网站发布总数是/否。这应该很容易,但我必须在某处丢失某些东西,因为我没有得到返回结果。至少没有php错误。我的总库

$result = mysql_query("SELECT * FROM Poll");

$votes_Poll = mysql_num_rows($result);

$vote_yes = mysql_query("SELECT vote, COUNT(*) FROM Poll GROUP BY yes");
$vote_no = mysql_query("SELECT vote, COUNT(*) FROM Poll GROUP BY no");


// Display the results

echo $votes_Poll;
echo "<br>";
echo $vote_yes;
echo "<br>";
echo $vote_no;

提前致谢

2 个答案:

答案 0 :(得分:1)

那是因为你正在回显一个查询对象。您的每个查询都应该是......

$vote_yes = mysql_query("SELECT COUNT(*) AS total FROM Poll WHERE vote = 'yes' ");
$row = mysql_fetch_object($vote_yes);

echo $row->total; //echoes out the number of yes votes

答案 1 :(得分:0)

您误解了GROUP BY的工作原理。您不用它来选择答案,它用于选择一个字段,聚合函数被分组。

如果您使用:

SELECT `vote`, COUNT(*) FROM Poll GROUP BY `vote`

然后这将返回两个结果,每个结果有两个值,投票(是或否)和该投票的计数。

$handle = mysql_query("SELECT `vote`, COUNT(*) AS `count` FROM Poll GROUP BY `vote` ORDER BY `vote` DESC");

if ($handle) {
    $results = mysql_fetch_assoc($handle);
    echo ($results[0]['count'] + $results[1]['count']) . "<br>" . $results[0]['count'] . "<br>" . $results[1]['count'];
}

NB。使用ORDER BY vote DESC部分,强制顺序为yes然后no(反向字母顺序),然​​后你不必检查哪一行是哪个。