###発生している問題
MySQLを用いてログから順位を作成し、それをPHPを用いて表示させようとしている。
db-fiddle上でダミーデータを用いて以下のコードを実行すると所望の2次元配列が得られる。
SQL
select user, count(*) as cnt from log group by user order by cnt desc limit 5;
実行結果例
user cnt
1000000 6
1000022 5
1000008 4
1000021 3
1000015 3
この結果を運用環境において以下のようにPHPを用いて表示させようとすると、最も大きいcntとそのuserのみが格納された1次元配列になってしまう。
MySQL
$con=mysqli_connect(host, username, password, database); $n=mysqli_fetch_assoc(mysqli_query($con,"select user, count(*) as cnt from log group by user order by cnt desc limit 5")); print_r($n);
実行結果例
Array ( [user] => 1000000 [cnt] => 6 )
運用環境においても複数ユーザーによる複数件のデータが存在している。
###利用環境
レンタルサーバー xfree
PHP 7.1.x
MySQL 5.0.95
phpMyAdmin 2.11.11.3
db-fiddle(SQL5.5で実行)
###試したこと・調べたこと
mysqli_fetch_assoc
をmysqli_fetch_row
やmysqli_fetch_array
に変えてみたが、案の定改善せず。
繰り返し呼び出すことで、次の行を取り出せるという情報を目にしたが、複数回呼び出すと2回目でNULLとなってしまう。
mysqli_fetch_all
を用いようとすると、定義されていないということでエラーになる。
###最後に
プログラミング初心者で、わからないことが多くあります。
初歩的な質問かもしれませんが、どうかご教示いただければ幸いです。
まだ回答がついていません
会員登録して回答してみよう