mysql_num_rows总是返回1

时间:2010-09-22 19:13:45

标签: php mysql mysql-num-rows

结果总是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来自某个地方。我需要提供哪些其他信息才能让我更轻松?

谢谢, 莱恩

4 个答案:

答案 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];