6

如果我需要知道数据库表中的总行数,我会执行以下操作:

$query = "SELECT * FROM tablename WHERE link='1';";
$result = mysql_query($query);
$count = mysql_num_rows($result);

更新:我犯了一个错误,以上是我的实际方法。我向所有人道歉

因此,您会看到通过整个数据库扫描恢复的数据总数。

有没有更好的办法?

4

7 回答 7

18
$query = "SELECT COUNT(*) FROM tablename WHERE link = '1'";
$result = mysql_query($query);
$count = mysql_result($result, 0);

这意味着您不会在数据库和 PHP 之间传输所有数据,这显然是对时间和资源的巨大浪费。

对于它的价值,您的代码实际上不会计算行数 - 它会给您 2 倍的列数,因为您正在计算代表单行的数组中的项目数(并且 mysql_fetch_array 给您两个每列数组中的条目 - 一个数字和一个列名)

于 2010-05-26T16:58:10.670 回答
10
SELECT COUNT(*) FROM tablename WHERE link='1';
于 2010-05-26T16:57:44.507 回答
4

你可以这样做:

SELECT count(*) FROM tablename;

供您查询。结果将是包含行数的单列。

于 2010-05-26T16:57:59.320 回答
3

如果我需要知道数据库表中的总行数

也许我在这里遗漏了一些东西,但是如果您只想获取表中的总行数,则不需要 WHERE 条件。只需这样做:

SELECT COUNT(*) FROM tablename

使用 WHERE 条件,您将只计算满足此条件的行数。

于 2010-05-26T17:07:51.227 回答
1

使用下面的代码

$qry=SHOW TABLES FROM 'database_name';
$res=mysql_query($qry);
$output=array();
$i=0;
while($row=mysql_fetch_array($res,MYSQL_NUM)){
       ++$i;
       $sql=SELECT COUNT(*) FROM $row[0];
       $output[$i]=mysql_query($sql);
 }
$totalRows=array_sum($ouptput);
echo $totalRows;
于 2010-05-27T04:37:54.590 回答
0

如果要使用以下 SQL 语句:

SELECT COUNT(*) FROM tablename WHERE link='1';

确保您在“链接”列上有索引

于 2010-05-26T21:46:16.630 回答
0

http://php.net/manual/en/function.mysql-num-rows.php 我认为你需要这个。

于 2010-05-26T18:06:14.767 回答