Maison >développement back-end >tutoriel php >Pourquoi `mysqli_stmt::num_rows` renvoie-t-il systématiquement zéro après avoir utilisé `prepare`, `bind_param`, `bind_result` et `fetch` ?
mysqli num_rows renvoie systématiquement zéro
Question :
Lors de l'utilisation de la préparation, bind_param de MySQLi, méthodes num_rows, bind_result et fetch pour récupérer les lignes d'une base de données, pourquoi num_rows renvoie-t-il toujours 0 ?
Réponse :
Utilisation incorrecte des appels MySQLi. Pour résoudre ce problème, exécutez les étapes suivantes avant de récupérer le nombre de lignes :
$stmt->execute(); $stmt->store_result();
L'appel à store_result() est essentiel pour que mysqli_stmt::num_rows fonctionne correctement.
Ici est un extrait de code révisé avec l'appel store_result() ajouté :
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 here } echo($num_of_rows); $stmt->close(); }
Veuillez vous référer à la documentation officielle pour mysqli_stmt::num_rows pour plus de détails.
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!