MySQLi での Count(*) 関数のカウントミス
MySQLi で COUNT(*) クエリを実行すると、ユーザーは予期しない動作に遭遇する可能性があります。実際のテーブルのサイズに関係なく、結果は一貫して 1 を返します。 MySQLi と phpMyAdmin の間のこの不一致は、不可解な場合があります。
調査と解決策
この不一致は、MySQLi が COUNT(*) の結果を単一行のレコードセットとして表すために発生します。実際のカウントにアクセスするには、fetch_row() メソッドを使用して結果をフェッチする必要があります。
したがって、MySQLi を使用して行カウントを決定する正しい方法は次のとおりです。
$result = $db->query("SELECT COUNT(*) FROM `table`"); $row = $result->fetch_row(); echo '#: ', $row[0];
この変更例では、このコードでは、結果が単一行のレコードセットであるため、num_rows プロパティは使用されず、その rowCount は常に 1 になります。代わりに、 fetch_row() メソッドを使用して、レコードセットの最初の列に格納されている実際の数を取得します。
以上がMySQLi でテーブルに行数が多い場合に COUNT(*) が 1 を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。