如何使用 PHP 获取 MySQL 表中的行数?

Posted

技术标签:

【中文标题】如何使用 PHP 获取 MySQL 表中的行数?【英文标题】:How to get count of rows in MySQL table using PHP? 【发布时间】:2020-02-02 06:26:05 【问题描述】:

我只是想使用 php 来计算 mysql 表中的总行数,并将该数字存储在一个名为 $count 的变量中。

我更喜欢过程式代码,因为我的思维无法以面向对象的方式工作。

$sql="SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result);
echo $count;

以上是我尝试过的最新版本。它没有给我一个数字,而是给了我“数组”这个词。

【问题讨论】:

这能回答你的问题吗? SELECT COUNT(*) AS count - How to use this count 【参考方案1】:

您有多种选择如何从 SQL 中获取 COUNT(*) 的值。最简单的三个大概是这样的:

$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['COUNT(*)'];
echo $count;

或使用列别名:

$sql = "SELECT COUNT(*) as cnt FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['cnt'];
echo $count;

或使用数值数组:

$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_row($result)[0];
echo $count;

如果你使用的是 PHP 8.1,那么你可以做得更简单:

$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_column($result);
echo $count;
// or using OO style
echo $con->query("SELECT COUNT(*) FROM news")->fetch_column();

不要按照网络上某些地方的建议使用mysqli_num_rows 来计算数据库中的记录。这个功能用处很少,统计记录绝对不是其中之一。使用mysqli_num_rows,您将要求 MySQL 从数据库中检索所有匹配记录,这可能会非常消耗资源。最好将计数记录的工作委托给 MySQL,然后在 PHP 中获取返回值,如我的答案所示。

我还建议学习 OOP,这可以使您的代码更简洁、更易于阅读。对 OOP 也可以这样做:

$sql = "SELECT COUNT(*) FROM news";
$count = $con->query($sql)->fetch_row()[0];
echo $count;

如果您的查询使用变量,那么您可以做类似的事情,但使用准备好的语句。

$sql = "SELECT COUNT(*) FROM news WHERE category=?";
$stmt = $con->prepare($sql);
$stmt->bind_param('s', $category);
$stmt->execute();
$count = $stmt->get_result()->fetch_row()[0];
echo $count;

【讨论】:

【参考方案2】:

最好使用 COUNT(*) 而不是选择所有行并使用mysqli_num_rows()

您的基本想法是正确的,您只需要正确获取结果即可。

$sql = "SELECT COUNT(*) FROM news";
$count = 0;
if ($result = mysqli_query($con, $sql)) 
    $row = mysqli_fetch_row($result);
    $count = $row[0];

echo $count;

【讨论】:

【参考方案3】:

以下PHP可用于执行查询以计算结果量:

$sql="SELECT COUNT(*) AS news_count FROM news";
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_array($result);
$count = $row['news_count'];
echo $count;

【讨论】:

以上是关于如何使用 PHP 获取 MySQL 表中的行数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在PHP中获取MYSQL数据库返回的数据的行数?

获取具有升序值的行数,如 1,2,3,直到发生中断,如表中的 1,2,3,7,8,9,10

如果表中的行数很大(200 万),NDB cluster7.5(MySQL 5.7)在获取数据时会花费更多时间

如何在不使用count(*)的情况下在greenplum中查找表中的行数

mysql获取表中数据行数

php 计算表中的行数