ホームページ >データベース >mysql チュートリアル >なぜ `mysqli_num_rows()` は「パラメータ 1 が mysqli_result であることを期待しており、ブール値が指定されている」を返すのでしょうか?

なぜ `mysqli_num_rows()` は「パラメータ 1 が mysqli_result であることを期待しており、ブール値が指定されている」を返すのでしょうか?

DDD
DDDオリジナル
2024-12-08 18:00:34580ブラウズ

Why does `mysqli_num_rows()` return

mysqli_num_rows() はパラメーター 1 が mysqli_result であることを期待し、ブール値が与えられます

エラー分析

エラー メッセージ "mysqli_num_rows( ) パラメーター 1 は次のようになると想定されます。 「mysqli_result, boolean Given」は、有効な MySQL 結果セット (mysqli_result) ではなくブール値に対して mysqli_num_rows() 関数を使用しようとすると発生します。

エラーの原因

提供されたコード内、オンラインでエラーが発生します22:

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

問題のデバッグ

変数 $dbc は、mysqli_query() 関数を使用して 13 行目で割り当てられます。ただし、クエリを調べるとエラーが明らかになります。

$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");

クエリは、「INNER JOIN」を使用して「users」テーブルと「profile」テーブルを結合しようとしていますが、「profile」と「profile」の間に結合条件がありません。他のテーブル。その結果、クエリは false (ブール値 false) を返します。

解決策

エラーを解決するには、クエリを修正して適切な結合条件を含める必要があります。修正されたクエリは次のとおりです:

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

この修正により、クエリは有効な MySQL 結果セットを返し、mysqli_num_rows() が正しく動作できるようになります。

以上がなぜ `mysqli_num_rows()` は「パラメータ 1 が mysqli_result であることを期待しており、ブール値が指定されている」を返すのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。