计算MySQL行数

时间:2013-07-16 15:09:45

标签: php mysql

我运行一个名为Log Block的附加组件的Minecraft服务器,它记录服务器上完成的所有操作,现在我在那里制作了一个“管理员”面板,它潜入数据库并计算开采的块总数和放置。

但是我怎么能实现这个目标,我说的是300万行而且数不胜数。

我应该每天运行一次cron作业并使用count(*)然后保存此结果,还是有更好的方法来实现这一目标?

这是我此时的代码

$result = mysql_query("SELECT count(id) FROM `lb-world` WHERE type='0' AND data='0'");
$result = mysql_fetch_array($result);

3 个答案:

答案 0 :(得分:1)

  $result = mysql_query("SELECT count(id) FROM `lb-world` WHERE type='0' AND data='0'");
  $result = mysql_fetch_array($result);

  echo $result[0]; //Output amount of rows

答案 1 :(得分:0)

$result = mysql_query("SELECT id FROM `lb-world` WHERE type='0' AND data='0'");
$result = mysql_num_rows($result);
echo $result;

上面的代码工作正常。 另一个例子见下文:

$result = mysql_query("SELECT count(id) AS myid FROM `lb-world` WHERE type='0' AND data='0'");
$result = mysql_fetch_array($result);
echo $result['myid'];

答案 2 :(得分:0)

如果您只想要前一天的计数,那么在当天开始时运行一个cron来计算。如果您想要更准确的计数,请保持每小时左右的统计数据。如果数量很大,那么每次加载页面都可能不是最好的。

您可能还希望使用MySQL AS语句使您的代码更清晰。

SELECT COUNT(id) AS count FROM...

这将返回名为count的列,其中第一行作为计数。然后你可以得到数组(*_fetch_array)并使用:

获取值
$array['count']

这将返回您想要的计数,因为mysql_num_rows将始终返回1,因为只有一行。

注意:不要使用MySQL_ *命令,因为它们已被弃用。请改用MySQLi_ *或PDO