Vous avez plusieurs options pour obtenir la valeur de COUNT(*)
à partir du SQL. Les trois plus simples sont probablement :
$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['COUNT(*)'];
echo $count;
ou en utilisant un alias de colonne :
$sql = "SELECT COUNT(*) as cnt FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['cnt'];
echo $count;
ou en utilisant un tableau numérique :
$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_row($result)[0];
echo $count;
Si vous utilisez PHP 8.1, vous pouvez le faire encore plus simplement :
$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();
Ne pas utiliser mysqli_num_rows
pour compter les enregistrements dans la base de données comme suggéré à certains endroits sur le Web. Cette fonction a très peu d'utilité, et compter les enregistrements n'en fait certainement pas partie. Utilisation de mysqli_num_rows
vous demanderiez à MySQL de récupérer tout faire correspondre les enregistrements de la base de données, ce qui peut être très consommateur de ressources. Il est bien préférable de déléguer le travail de comptage des enregistrements à MySQL, puis d'obtenir simplement la valeur renvoyée en PHP, comme indiqué dans ma réponse.
Je recommanderais également d'apprendre la POO, ce qui rend votre code plus propre et plus facile à lire. La même chose avec la POO pourrait être faite comme suit :
$sql = "SELECT COUNT(*) FROM news";
$count = $con->query($sql)->fetch_row()[0];
echo $count;
Si votre requête utilise des variables, vous pouvez faire la même chose, mais en utilisant des instructions préparées.
$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;