Maison >base de données >tutoriel mysql >Pourquoi `mysqli_num_rows()` renvoie-t-il un booléen au lieu d'un ensemble de résultats ?

Pourquoi `mysqli_num_rows()` renvoie-t-il un booléen au lieu d'un ensemble de résultats ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-07 19:49:14687parcourir

Why Does `mysqli_num_rows()` Return a Boolean Instead of a Result Set?

PHP et MySQL : résolution de l'erreur "mysqli_num_rows() s'attend à ce que le paramètre 1 soit mysqli_result, booléen donné"

L'erreur "mysqli_num_rows() s'attend à ce que le paramètre 1 soit mysqli_result, booléen donné" indique que l'entrée fournie au La fonction mysqli_num_rows() n'est pas un jeu de résultats valide. Cette erreur se produit souvent lorsque l'argument d'entrée n'est pas le résultat d'une exécution réussie de la requête.

Dans ce cas précis, l'erreur se produit dans la ligne suivante du code PHP :

if (mysqli_num_rows($dbc) == 0) {

Ici, la variable $dbc est utilisée comme entrée de mysqli_num_rows(), mais elle renvoie false car la requête exécutée sur $dbc contient un erreur :

$dbc = mysqli_query($mysqli,"SELECT users.*, profile.*
                                 FROM users 
                                 INNER JOIN contact_info 
                                 ON contact_info.user_id = users.user_id 
                                 WHERE users.user_id=3");

L'erreur dans la requête est le mot-clé JOIN manquant entre les utilisateurs et les tables de profil :

SELECT users.*, profile.* --You do not join with profile anywhere.
                                 FROM users 
                                 INNER JOIN contact_info 
                                 ON contact_info.user_id = users.user_id 
                                 WHERE users.user_id=3");

Pour résoudre le problème, vous devez modifier la requête comme suit :

$dbc = mysqli_query($mysqli,"SELECT users.*, profile.*
                                 FROM users 
                                 INNER JOIN profile 
                                 ON contact_info.user_id = users.user_id 
                                 WHERE users.user_id=3");

En corrigeant la requête, la fonction mysqli_num_rows() recevra désormais un jeu de résultats valide et pourra déterminer si le nombre de lignes dans le résultat est zéro.

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