Maison >développement back-end >tutoriel php >Pourquoi mysqli_num_rows() renvoie-t-il « s'attend-il à ce que le paramètre 1 soit mysqli_result, booléen donné » ?
Erreur de fonction mysqli_num_rows() dans PHP et MySQL : un guide détaillé
Problème :
Lors de l'appel de la fonction mysqli_num_rows(), l'erreur "mysqli_num_rows() attend le paramètre 1 pour être mysqli_result, booléen donné" est rencontré. Cette erreur indique un problème avec le paramètre passé à la fonction.
Analyse et résolution :
La fonction mysqli_num_rows() s'attend à ce que le premier paramètre soit un objet mysqli_result valide . Dans le code fourni, $dbc est utilisé par erreur comme paramètre. Cependant, l'examen du code révèle que $dbc est le résultat d'un appel à mysqli_query().
Le véritable problème réside dans la requête elle-même. La requête tente d'effectuer une INNER JOIN entre les tables "users" et "profile". Cependant, aucune condition JOIN explicite n’est spécifiée dans la requête. Cela entraîne le retour de la requête false, qui est ensuite transmise à la fonction mysqli_num_rows() et déclenche l'erreur.
Pour résoudre ce problème, vous devez spécifier une condition JOIN valide dans la requête. Dans ce cas, vous devriez probablement REJOINDRE les "utilisateurs" et le "profil" dans leurs champs user_id. Une fois la requête corrigée, elle doit renvoyer un objet mysqli_result valide, qui peut ensuite être transmis à la fonction mysqli_num_rows().
Requête corrigée :
$dbc = mysqli_query($mysqli, " SELECT users.*, profile.* FROM users INNER JOIN profile ON users.user_id = profile.user_id WHERE users.user_id=3 ");
Avec cet ajustement, la requête devrait s'exécuter avec succès, renvoyant un objet mysqli_result qui peut être utilisé par la fonction mysqli_num_rows() sans déclenchant l'erreur.
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!