2

结果始终为 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

4 回答 4

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);

这将获取第一行(基于零)并返回第一个字段(基于零)。

于 2010-09-22T19:15:31.497 回答
2

该查询确实只返回一行。您想要的是从查询中检索

$row = mysql_fetch_array($res);
$vote_total = $row[0];
于 2010-09-22T19:17:41.673 回答
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,你必须选择所有的行。

于 2010-09-22T19:15:46.420 回答
1

棘手的部分是,即使 sql 查询包含 COUNT() 语句,它仍然像其他任何查询结果一样。如果您发出了常规查询,MySQL 将返回包含单个列的行,其中包含将返回的行数。另一方面,mysql_num_rows() 只计算实际执行的查询结果中的行数。在这种情况下,它始终是单行。

你想要的是:

$sql = 'SELECT COUNT(Vote) FROM ' . $table;
$res = mysql_query($sql, $conn);
$data = mysql_fetch_row($res);
$vote_total = $data[0];
于 2010-09-22T19:16:20.933 回答