num_rows mysqli_result mysqli_query mysqli_num_rows mysqli_fetch_array mysql_num_rows ejemplos php mysql mysqli

mysqli_result - rowcount php



mysqli_statement:: num_rows() devuelve el valor incorrecto (3)

Estaba escribiendo una clase de manejador de base de datos en PHP usando la clase mysqli y las declaraciones preparadas. Estaba intentando imprimir el resultado. No funcionó desde el principio, así que decidí hacer algunas depuraciones. Traté de usar el método num_rows() de la clase mysqli_statement , pero no dejaba de devolver 0. Decidí escribir una pequeña porción del código de prueba para mantenerlo más simple y poder ver lo que estaba pasando mal. Luego pude devolver los datos que quería, pero el método num_rows() todavía devuelve 0 incluso cuando realmente está seleccionando y recuperando algunos datos. Aquí está el código:

$mysqli = new mysqli(''localhost'', ''username'', ''password'', ''database''); if(mysqli_connect_errno()) { die(''connection failed''); } $statement = $mysqli->stmt_init(); $query = "SELECT name FROM table WHERE id = ''2000''"; if($statement->prepare($query)) { $statement->execute(); $statement->bind_result($name); $statement->fetch(); $statement->store_result(); echo $statement->num_rows(); echo $name; } else { echo ''prepare statement failed''; exit(); }

Así que sí, el resultado esperado es:

1name

Y el resultado real es:

0name

¿Alguien puede decirme por qué es esto?


Me pregunto si num_rows () informa sobre el resultado actual. Intenta capturar num_rows () antes de recuperar los datos. p.ej

if($statement->prepare($query)) { $statement->execute(); $statement->store_result(); echo $statement->num_rows(); $statement->bind_result($name); $statement->fetch(); echo $name; }

¿Eso tiene algún efecto?


No parece que hayas declarado $ nombre.

Además, intente eliminar bind_result () y fetch () para que lea algo como esto:

$statement->execute(); $statement->store_result(); printf("Number of rows: %d./n", $statement->num_rows);


num_rows no es un método, es una propiedad.