У вас есть несколько вариантов получения значения 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;
Не использовать 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;