Maison >développement back-end >tutoriel php >Pourquoi `mysqli_stmt::num_rows` renvoie-t-il toujours 0 ?
Pourquoi mon mysqli_stmt::num_rows renvoie-t-il toujours 0 ?
Lorsque vous tentez de récupérer le nombre de lignes renvoyées par une requête MySQL à l'aide de mysqli_stmt ::num_rows, les utilisateurs peuvent rencontrer un retour constant de 0, malgré l'existence de résultats réels. Pour résoudre ce problème, il est crucial d'appeler la fonction mysqli_stmt::store_result() avant num_rows.
Le code suivant illustre l'utilisation correcte :
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(); $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(); }
Comme indiqué dans le document officiel Documentation MySQL pour mysqli_stmt::num_rows, "[...] Le nombre de lignes dans un jeu de résultats peut être trouvé en appelant la méthode num_rows. Cela doit être fait après avoir appelé store_result." En incluant l'appel mysqli_stmt::store_result(), l'ensemble de résultats est stocké dans le client, permettant une détermination précise du nombre de lignes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!