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` ?

Pourquoi `mysqli_stmt::num_rows` renvoie-t-il systématiquement zéro après avoir utilisé `prepare`, `bind_param`, `bind_result` et `fetch` ?

DDD
DDDoriginal
2024-12-08 05:43:09286parcourir

Why Does `mysqli_stmt::num_rows` Consistently Return Zero After Using `prepare`, `bind_param`, `bind_result`, and `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!

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