Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como obter a contagem de linhas na tabela MySQL usando PHP?


Você tem algumas opções para obter o valor de COUNT(*) do SQL. Os três mais fáceis são provavelmente estes:
$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['COUNT(*)'];
echo $count;

ou usando o alias da coluna:
$sql = "SELECT COUNT(*) as cnt FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['cnt'];
echo $count;

ou usando matriz numérica:
$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_row($result)[0];
echo $count;

Se você estiver usando o PHP 8.1, poderá fazê-lo ainda mais simples:
$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();

Não use mysqli_num_rows para contar os registros no banco de dados como sugerido em alguns lugares na web. Esta função tem muito pouco uso, e a contagem de registros definitivamente não é uma delas. Usando mysqli_num_rows você estaria pedindo ao MySQL para recuperar todos registros correspondentes do banco de dados, o que pode consumir muito recursos. É muito melhor delegar o trabalho de contagem de registros ao MySQL e depois apenas obter o valor retornado em PHP, conforme mostrado na minha resposta.

Eu também recomendaria aprender POO, o que torna seu código mais limpo e fácil de ler. O mesmo com OOP pode ser feito da seguinte forma:
$sql = "SELECT COUNT(*) FROM news";
$count = $con->query($sql)->fetch_row()[0];
echo $count;

Se sua consulta usa variáveis, você pode fazer algo semelhante, mas usando instruções preparadas.
$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;