¿Por qué mysqli num_rows siempre devuelve 0?

Resuelto ollie asked hace 54 años • 1 respuestas

He tenido problemas para obtener el número de filas que se deben devolver usando mysqli. Cada vez obtengo 0, aunque definitivamente hay algunos resultados.

if($stmt = $mysqli->prepare("SELECT id, title, visible, parent_id FROM content WHERE parent_id = ? ORDER BY page_order ASC;")){  
    $stmt->bind_param('s', $data->id);  
    $stmt->execute();
    $num_of_rows = $stmt->num_rows;  
    $stmt->bind_result($child_id, $child_title, $child_visible, $child_parent);  

    while($stmt->fetch()){
        //code
    }

    echo($num_of_rows);

    $stmt->close();
}

¿Por qué no muestra el número correcto?

ollie avatar Jan 01 '70 08:01 ollie
Aceptado

Debes llamar mysqli_stmt::store_result()antes de la búsqueda de num_rows:

if($stmt = $mysqli->prepare("SELECT id, title, visible, parent_id FROM content WHERE parent_id = ? ORDER BY page_order ASC;")){  
    $stmt->bind_param('s', $data->id);  
    $stmt->execute();
    $stmt->store_result(); <-- This needs to be called here!
    $num_of_rows = $stmt->num_rows;  
    $stmt->bind_result($child_id, $child_title, $child_visible, $child_parent);  

    while($stmt->fetch()){
        //code
    }

    echo($num_of_rows);

    $stmt->close();
}

Consulte los documentos en mysqli_stmt::num_rows, lo dice cerca de la parte superior de la página (en el bloque de descripción principal).

ircmaxell avatar Feb 16 '2011 14:02 ircmaxell