ホームページ > バックエンド開発 > PHPチュートリアル > MySQLi の `query()` メソッドが `COUNT(*)` を使用すると予期しない行数を返すのはなぜですか?

MySQLi の `query()` メソッドが `COUNT(*)` を使用すると予期しない行数を返すのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-07 06:55:03
オリジナル
657 人が閲覧しました

Why Does MySQLi's `query()` Method Return an Unexpected Row Count When Using `COUNT(*)`?

MySQLi のクエリ メソッドにより予期しない行数が発生する

COUNT(*) 関数を使用して MySQL テーブルの行数を取得しようとすると、 MySQLi オブジェクトの query() メソッドを使用すると、返される行数が常に 1 になる予期しない結果が発生する可能性があります。これは、phpMyAdmin などのツールを使用して同じクエリを実行する場合の正しい結果とは異なる可能性があります。

理解Issue

MySQLi_Result オブジェクトの num_rows プロパティは、実行されたクエリによって返された結果セット内の行数を反映します。ただし、COUNT(*) 関数を使用すると、通常のクエリ結果のように複数の行ではなく、カウント値を含む 1 つの行が結果として返されます。

正しいアプローチ

MySQLi を使用して正しいカウント値を取得するには、MySQLi_Result オブジェクトから 1 つの結果行をフェッチし、その行からカウント値を取得する必要があります。これは、結果セットの最初の行から列値の配列を返す fetch_row() メソッドを使用して実現できます。

正しいアプローチを示す例は次のとおりです。

$result = $db->query("SELECT COUNT(*) FROM `table`");
$row = $result->fetch_row();
$count = $row[0];
echo 'Row count: ', $count;
ログイン後にコピー

このコードは、最初の行からカウント値を取得して出力します。

以上がMySQLi の `query()` メソッドが `COUNT(*)` を使用すると予期しない行数を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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