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

DDD
リリース: 2024-11-28 00:08:12
オリジナル
654 人が閲覧しました

Why Does mysqli_num_rows() Return

PHP および MySQL の mysqli_num_rows() 関数エラー: 詳細ガイド

問題:

mysqli_num_rows()関数を呼び出すとき、 「mysqli_num_rows() はパラメーター 1 が mysqli_result であることを期待しており、ブール値が指定されています」というエラーが発生します。このエラーは、関数に渡されたパラメータに問題があることを示しています。

分析と解決策:

mysqli_num_rows() 関数は、最初のパラメータが有効な mysqli_result オブジェクトであることを期待しています。 。提供されたコードでは、$dbc がパラメータとして誤って使用されています。ただし、コードを調べると、$dbc が mysqli_query() 呼び出しの結果であることがわかります。

実際の問題はクエリ自体にあります。クエリは、「users」テーブルと「profile」テーブルの間で INNER JOIN を実行しようとします。ただし、クエリには明示的な JOIN 条件が指定されていません。この結果、クエリは false を返し、mysqli_num_rows() 関数に渡されてエラーがトリガーされます。

この問題を解決するには、クエリで有効な JOIN 条件を指定する必要があります。この場合、おそらく user_id フィールドで「users」と「profile」を JOIN する必要があります。クエリが修正されると、有効な mysqli_result オブジェクトが返され、mysqli_num_rows() 関数に渡すことができます。

修正されたクエリ:

$dbc = mysqli_query($mysqli, "
SELECT users.*, profile.*
FROM users 
INNER JOIN profile 
ON users.user_id = profile.user_id 
WHERE users.user_id=3
");
ログイン後にコピー

この調整により、クエリは正常に実行され、クエリで使用できる mysqli_result オブジェクトが返されるはずです。エラーを引き起こさずに mysqli_num_rows() 関数を実行します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート