MySQLi を使用して MySQL テーブル内の行数をカウントすると、$result-> が次のような奇妙な現象に遭遇することがあります。 ;num_rows は一貫してカウント 1 を報告します。正しい値を調べてみましょう。
問題は、MySQLi が COUNT(*) クエリの結果をどのように処理するかにあります。行のセットを含む通常のクエリの結果とは異なり、COUNT(*) はカウントを含む 1 つの列を持つ 1 つの行を返します。
このカウントを正確に取得するには、1 つの行をフェッチする必要があります。結果セットから。次のコードは正しい使用法を示しています。
$result = $db->query("SELECT COUNT(*) FROM `table`"); $row = $result->fetch_row(); $count = $row[0]; echo "Count: $count";
最初 (唯一) の行をフェッチし、その最初の列にアクセスすることで、正しいカウントを取得します。 $result->num_rows を使用すると、結果セット内の行数を表すため、常に 1 が返されます。これは、COUNT(*) クエリの場合は 1 です。
結果に複数の行が含まれる通常のクエリの場合は覚えておいてください。 、$result->num_rows を使用するのが適切です。ただし、COUNT(*) クエリの場合は、常に上記のパターンに従って実際のカウントを取得してください。
以上がテーブル行をカウントするときに MySQLi の「count(*)」が 1 を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。