ホームページ > バックエンド開発 > PHPチュートリアル > MySQLi でテーブルに行数が多い場合に COUNT(*) が 1 を返すのはなぜですか?

MySQLi でテーブルに行数が多い場合に COUNT(*) が 1 を返すのはなぜですか?

Barbara Streisand
リリース: 2024-11-10 08:04:02
オリジナル
261 人が閲覧しました

Why does COUNT(*) return 1 in MySQLi when the table has more rows?

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 サイトの他の関連記事を参照してください。

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