结果总是1:
$sql = 'SELECT COUNT(Vote) FROM ' . $table;
$res = mysql_query($sql, $conn);
$vote_total = mysql_num_rows($res);
我在phpMyAdmin中运行$ sql查询并返回3,因此查询不是问题。 $ vote_total全局初始化为0,因此1来自某个地方。我需要提供哪些其他信息才能让我更轻松?
谢谢, 莱恩
答案 0 :(得分:10)
mysql_num_rows
返回所选行的数量,而不是某行的字段。使用mysql_fetch_row
获取您使用查询选择的行:
$sql = 'SELECT COUNT(Vote) FROM ' . $table;
$res = mysql_query($sql, $conn);
$row = mysql_fetch_row($res);
$vote_total = $row[0];
您还可以使用mysql_result
获取行并获取某个字段:
$vote_total = mysql_result($res, 0, 0);
这将获取第一行(基于零)并返回第一个字段(基于零)。
答案 1 :(得分:2)
只会有一行。而那一排将是投票数。
$sql = 'SELECT COUNT(Vote) FROM ' . $table;
$res = mysql_query($sql, $conn);
$vote_array = mysql_fetch_array($res);
$vote_total = $vote_array[0];
如果您想使用mysql_num_rows
计算投票数,则必须选择所有行。
答案 2 :(得分:2)
该查询确实只返回一行。您想要的是从查询中检索值:
$row = mysql_fetch_array($res);
$vote_total = $row[0];
答案 3 :(得分:1)
棘手的部分是,即使sql查询包含COUNT()语句,它仍然是一个像任何其他查询结果一样的查询结果。如果您发出了reglar查询,MySQL将返回包含单个列的行,其中包含已返回的行数。另一方面,mysql_num_rows()只计算实际执行的查询结果中的行数。在这种情况下,它总是一行。
你想要的是:
$sql = 'SELECT COUNT(Vote) FROM ' . $table;
$res = mysql_query($sql, $conn);
$data = mysql_fetch_row($res);
$vote_total = $data[0];