Pourquoi ne mysqli num_rows retourne toujours 0?
J'ai eu du mal à obtenir le nombre de lignes à retourner à l'aide de mysqli. Je viens d'obtenir 0 retour à chaque fois, même si il ya certainement des résultats.
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();
$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();
}
Pourquoi ne pas montrer le bon numéro?
Que fait un var_dump sur $stmt produire?
print_r() retourne: mysqli_stmt Object ( [affected_rows] => -1 [insert_id] => 0 [num_rows] => 0 [param_count] => 1 [field_count] => 4 [errno] => 0 [erreur] => [sqlstate] => 00000 [id] => 1 )
assurez-vous que les données existent...
La façon dont je le comprend (et s'il vous plaît corrigez-moi si je me trompe, c'est nouveau pour moi) est que, après $stmt->execute() est appelée, la requête est exécutée et donc, à tout moment après que je devrais être en mesure d'accéder le nombre de lignes qui ont été récupérés? J'ai essayé en faisant écho à $stmt->num_rows après $stmt->execute() et après $stmt->fetch(). La requête est certainement juste, parce que c'est le remplissage de la table de cellules (//code) correctement - il y a donc des données. Merci
print_r() retourne: mysqli_stmt Object ( [affected_rows] => -1 [insert_id] => 0 [num_rows] => 0 [param_count] => 1 [field_count] => 4 [errno] => 0 [erreur] => [sqlstate] => 00000 [id] => 1 )
assurez-vous que les données existent...
La façon dont je le comprend (et s'il vous plaît corrigez-moi si je me trompe, c'est nouveau pour moi) est que, après $stmt->execute() est appelée, la requête est exécutée et donc, à tout moment après que je devrais être en mesure d'accéder le nombre de lignes qui ont été récupérés? J'ai essayé en faisant écho à $stmt->num_rows après $stmt->execute() et après $stmt->fetch(). La requête est certainement juste, parce que c'est le remplissage de la table de cellules (//code) correctement - il y a donc des données. Merci
OriginalL'auteur ollie | 2011-02-16
Vous devez vous connecter pour publier un commentaire.
Vous devez appeler
MySqli_Stmt::store_result()
avant la num_rows de recherche:Voir les docs sur
MySQLi_Stmt->num_rows
, il le dit à droite près de la haut de la page (dans le principal bloc de description)...J'ai manqué trop. Il n'est pas dans la majorité des exemples sur PHP.net.
J'ai été une heure à essayer, et ne peuvent pas le faire fonctionner. Justo code copié, changement de nom de la table et des champs. Rien. Comment une telle fonctionnalité de base si difficile????
OriginalL'auteur ircmaxell
Essayez de régler votre
$num_of_rows
juste après votre cas(énoncé) - avant bind_param... à Moins que l'évolution de vos résultats. Difficile à dire sans plus d'info.Il semble que il ya quelque chose de mal dans votre requête. Essayez de faire un droit de requête comme
if($stmt = $mysqli->query("SELECT id, title, visible, parent_id FROM content WHERE parent_id = YOURIDHERE ORDER BY page_order ASC;")){
et voir si c'est encore kickin' 0 résultatsFaire num_rows juste après le if() ne fait rien - la requête n'a pas encore été exécutés, il est donc impossible de savoir combien de lignes ont été retournés.
Yep, encore de me donner 0. Je sais que la requête fonctionne bien parce que le commentaire //code php que j'ai posté dans le premier post affiche les résultats dans un tableau et qu'il fonctionne correctement
OriginalL'auteur TNC