您有多种选择如何从 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;