Maison >développement back-end >tutoriel php >Pourquoi `mysqli_num_rows()` renvoie-t-il 0 après `mysqli_stmt::execute()` ?

Pourquoi `mysqli_num_rows()` renvoie-t-il 0 après `mysqli_stmt::execute()` ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-05 10:53:11357parcourir

Why Does `mysqli_num_rows()` Return 0 After `mysqli_stmt::execute()`?

Pourquoi mysqli_num_rows() renvoie 0 en PHP

Dans MySQLi, l'exécution de requêtes sans récupérer au préalable les résultats peut entraîner un nombre de lignes incorrect. Lorsque vous rencontrez ce problème avec mysqli_num_rows(), tenez compte des éléments suivants :

Exemple de code et explication

Considérez l'extrait de code ci-dessous :

$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; // Error!

$stmt->bind_result($child_id, $child_title, $child_visible, $child_parent);

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

echo($num_of_rows);

Dans ce code, mysqli_num_rows() renvoie toujours 0 car les résultats n'ont pas été récupérés encore.

Solution : utilisez mysqli_stmt::store_result()

Avant d'appeler mysqli_num_rows(), vous devez appeler mysqli_stmt::store_result() pour stocker la requête donne lieu à un tampon. Ce processus permet le comptage de rowCount :

$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(); // Fetches results into a memory buffer
$num_of_rows = $stmt->num_rows;

$stmt->bind_result($child_id, $child_title, $child_visible, $child_parent);

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

echo($num_of_rows);

N'oubliez pas de consulter la documentation de mysqli_num_rows() car ces détails sont généralement mentionnés dans la section de description.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn