PHP 8.4.2 Released!

mysqli_stmt::$num_rows

mysqli_stmt_num_rows

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::$num_rows -- mysqli_stmt_num_rowsDevuelve el número de filas de un conjunto de resultados de una sentencia

Descripción

Estilo orientado a objetos

Estilo por procedimientos

mysqli_stmt_num_rows(mysqli_stmt $stmt): int

Devuelve el número de filas de un conjunto de resultados. El uso de mysqli_stmt_num_rows() depende de si se utiliza mysqli_stmt_store_result() para almacenar en buffer el conjunto de resultados completo en el gestor de sentencia.

Si se usa mysqli_stmt_store_result(), mysqli_stmt_num_rows() puede llamarse inmediatamente.

Parámetros

stmt

Sólo estilo por procediminetos: Un identificador de declaraciones devuelto por mysqli_stmt_init().

Valores devueltos

Un valor integer que representa el número de filas del conjunto de resultados.

Ejemplos

Ejemplo #1 Estilo orientado a objetos

<?php
/* Abrir una conexión */
$mysqli = new mysqli("localhost", "mi_usuario", "mi_contraseña", "world");

/* comprobar la conexión */
if (mysqli_connect_errno()) {
printf("Falló la conexión: %s\n", mysqli_connect_error());
exit();
}

$consulta = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
if (
$sentencia = $mysqli->prepare($consulta)) {

/* ejecutar la consulta */
$sentencia->execute();

/* almacenar el resultado */
$sentencia->store_result();

printf("Número de filas: %d.\n", $sentencia->num_rows);

/* cerrar la sentencia */
$sentencia->close();
}

/* cerrar la conexión */
$mysqli->close();
?>

Ejemplo #2 Estilo por procedimientos

<?php
/* Abrir una conexión */
$enlace = mysqli_connect("localhost", "mi_usuario", "mi_contraseña", "world");

/* comprobar la conexión */
if (mysqli_connect_errno()) {
printf("Falló la conexión: %s\n", mysqli_connect_error());
exit();
}

$consulta = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
if (
$sentencia = mysqli_prepare($enlace, $consulta)) {

/* ejecutar la consulta */
mysqli_stmt_execute($sentencia);

/* almacenar el resultado */
mysqli_stmt_store_result($sentencia);

printf("Número de filas: %d.\n", mysqli_stmt_num_rows($sentencia));

/* cerrar la sentencia */
mysqli_stmt_close($sentencia);
}

/* cerrar la conexión */
mysqli_close($enlace);
?>

El resultado de los ejemplos sería:

Número de filas: 20.

Ver también

add a note

User Contributed Notes 1 note

up
89
Typer85 at gmail dot com
17 years ago
Please be advised, for people who sometimes miss to read this important Manual entry for this function:

If you do not use mysqli_stmt_store_result( ), and immediatley call this function after executing a prepared statement, this function will usually return 0 as it has no way to know how many rows are in the result set as the result set is not saved in memory yet.

mysqli_stmt_store_result( ) saves the result set in memory thus you can immedietly use this function after you both execute the statement AND save the result set.

If you do not save the result set but still want to use this function you have to actually loop through the result set one row at a time using mysqli_stmt_fetch( ) before using this function to determine the number of rows.

A thought though, if you want to determine the number of rows without storing the result set and after looping through it, why not just simply keep an internal counter in your loop every time a row is fetched and save the function call.

In short, this function is only really useful if you save the result set and want to determine the number of rows before looping through it, otherwise you can pretty much recreate its use like I suggested.
To Top