sql >> Databáze >  >> RDS >> Mysql

Jak získat počet řádků v tabulce MySQL pomocí PHP?

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;


  1. Pochopte roli datových architektů ve správě dat

  2. ORA-12505, TNS:listener aktuálně nezná SID uvedené v connect des

  3. Problém s blokem PL/SQL:Chyba nenalezena žádná data

  4. uživatel postgres spustí proces, který zabere 100% využití všech CPU