Máte několik možností, jak získat hodnotu COUNT(*)
z SQL. Nejjednodušší tři jsou pravděpodobně toto:
$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['COUNT(*)'];
echo $count;
nebo pomocí aliasu sloupce:
$sql = "SELECT COUNT(*) as cnt FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['cnt'];
echo $count;
nebo pomocí číselného pole:
$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_row($result)[0];
echo $count;
Pokud používáte PHP 8.1, můžete to udělat ještě jednodušeji:
$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();
Nepoužívejte mysqli_num_rows
spočítat záznamy v databázi, jak je na některých místech na webu navrhováno. Tato funkce má velmi malé využití a počítání záznamů mezi ně rozhodně nepatří. Pomocí mysqli_num_rows
požádáte MySQL o načtení všech párování záznamů z databáze, což může být velmi náročné na zdroje. Je mnohem lepší delegovat práci počítání záznamů na MySQL a pak jen získat vrácenou hodnotu v PHP, jak je uvedeno v mé odpovědi.
Také bych doporučil naučit se OOP, díky čemuž je váš kód čistší a snáze čitelný. Totéž s OOP lze provést následovně:
$sql = "SELECT COUNT(*) FROM news";
$count = $con->query($sql)->fetch_row()[0];
echo $count;
Pokud váš dotaz používá proměnné, můžete udělat podobnou věc, ale pomocí připravených příkazů.
$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;