###発生している問題
MySQLを用いてログから順位を作成し、それをPHPを用いて表示させようとしている。
db-fiddle上でダミーデータを用いて以下のコードを実行すると所望の2次元配列が得られる。
SQL
1select 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
1$con=mysqli_connect(host, username, password, database); 2$n=mysqli_fetch_assoc(mysqli_query($con,"select user, count(*) as cnt from log group by user order by cnt desc limit 5")); 3print_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
を用いようとすると、定義されていないということでエラーになる。
###最後に
プログラミング初心者で、わからないことが多くあります。
初歩的な質問かもしれませんが、どうかご教示いただければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/25 12:57
2021/09/25 13:07
2021/09/25 13:18
2021/09/25 13:21
2021/09/26 02:37
2021/09/26 03:00
2021/09/26 08:00