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
Libérer: 2024-12-05 10:53:11
original
356 Les gens l'ont consulté

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);
Copier après la connexion

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal