sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo obtener el recuento de filas en la tabla MySQL usando PHP?

Tiene un par de opciones para obtener el valor de COUNT(*) del Sql. Los tres más fáciles son probablemente estos:

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

o usando el alias de la columna:

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

o usando una matriz numérica:

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

Si está utilizando PHP 8.1, puede hacerlo aún más simple:

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

No use mysqli_num_rows para contar los registros en la base de datos como se sugiere en algunos lugares de la web. Esta función tiene muy poco uso, y contar registros definitivamente no es una de ellas. Usando mysqli_num_rows le pediría a MySQL que recupere todo registros coincidentes de la base de datos, lo que podría consumir muchos recursos. Es mucho mejor delegar el trabajo de contar registros a MySQL y luego obtener el valor devuelto en PHP como se muestra en mi respuesta.

También recomendaría aprender OOP, lo que hace que su código sea más limpio y fácil de leer. Lo mismo con OOP podría hacerse de la siguiente manera:

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

Si su consulta usa variables, entonces podría hacer algo similar, pero usando declaraciones 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;