Maison >base de données >tutoriel mysql >Pourquoi `mysqli_num_rows()` renvoie-t-il une erreur « booléenne donnée » dans PHP et MySQL ?

Pourquoi `mysqli_num_rows()` renvoie-t-il une erreur « booléenne donnée » dans PHP et MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-09 00:17:11204parcourir

Why Does `mysqli_num_rows()` Return a

PHP et MySQL : résolution de l'erreur de paramètre mysqli_num_rows() avec mysqli_result

Lors de l'intégration de HTML Purifier dans PHP pour la validation des données, il est crucial de s'assurer passage de paramètre approprié pour éviter les erreurs courantes telles que "mysqli_num_rows() s'attend à ce que le paramètre 1 soit mysqli_result, booléen donné."

Comprendre l'erreur

En général, cette erreur se produit lorsque la fonction mysqli_num_rows() est appelée avec un argument incorrect. Il attend un objet mysqli_result valide comme premier paramètre. Dans l'extrait de code donné, le premier paramètre est $dbc, qui doit être un jeu de résultats valide à partir d'une requête MySQL.

Causes possibles

Utilisation incorrecte ou un une requête mal formée peut conduire au retour d'une valeur booléenne (FALSE) à la place d'un objet mysqli_result. Cela peut se produire si :

  • La syntaxe de la requête comporte une erreur.
  • La fonction mysqli_query() n'est pas correctement exécutée.
  • La requête renvoie un jeu de résultats vide .

Résoudre le problème

Dans le code, le problème réside dans la requête SQL utilisée pour récupérer les données de la base de données :

$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 est causée par l'omission de la jointure avec le profil par rapport aux utilisateurs et à contact_info. La requête correcte doit être :

$dbc = mysqli_query($mysqli,"SELECT u.*, p.*
                                 FROM users AS u
                                 LEFT JOIN profile AS p ON u.user_id = p.user_id
                                 WHERE u.user_id=3");

En corrigeant la requête, la variable $dbc renverra un objet mysqli_result valide, vous permettant d'utiliser efficacement mysqli_num_rows() :

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

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