sql >> Database teknologi >  >> RDS >> Mysql

Hvordan får man optælling af rækker i MySQL-tabel ved hjælp af PHP?

Du har et par muligheder for at få værdien af ​​COUNT(*) fra SQL. De tre nemmeste er nok dette:

$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['COUNT(*)'];
echo $count;

eller ved at bruge kolonnealias:

$sql = "SELECT COUNT(*) as cnt FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['cnt'];
echo $count;

eller ved at bruge numerisk array:

$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_row($result)[0];
echo $count;

Hvis du bruger PHP 8.1, så kan du gøre det endnu enklere:

$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();

Brug ikke mysqli_num_rows at tælle posterne i databasen som foreslået nogle steder på nettet. Denne funktion har meget lidt brug, og at tælle poster er bestemt ikke en af ​​dem. Brug af mysqli_num_rows du ville bede MySQL om at hente alle matchende poster fra databasen, hvilket kan være meget ressourcekrævende. Det er meget bedre at uddelegere opgaven med at tælle poster til MySQL og så bare få den returnerede værdi i PHP som vist i mit svar.

Jeg vil også anbefale at lære OOP, hvilket gør din kode renere og nemmere at læse. Det samme med OOP kunne gøres som følger:

$sql = "SELECT COUNT(*) FROM news";
$count = $con->query($sql)->fetch_row()[0];
echo $count;

Hvis din forespørgsel bruger variabler, kan du gøre noget lignende, men ved at bruge forberedte udsagn.

$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. Escape en streng i SQL Server, så den er sikker at bruge i LIKE udtryk

  2. Dvaledialekt for Oracle Database 11g?

  3. SQL Server 2016:OLTP-forbedringer i hukommelsen

  4. Hvordan tæller man rækker, der opfylder en betingelse i Redshift/Postgres?