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