Имате няколко опции как да получите стойността на COUNT(*)
от SQL. Най-лесните три вероятно са следните:
$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, както е показано в моя отговор.
Бих препоръчал също да научите ООП, което прави вашия код по-чист и по-лесен за четене. Същото с ООП може да се направи по следния начин:
$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;