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
Libérer: 2024-12-07 19:49:14
original
727 Les gens l'ont consulté

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

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

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

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

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!

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