質問編集履歴

4

質問の編集2

2022/01/21 02:20

投稿

bruno7777
bruno7777

スコア3

test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,6 @@
1
1
  ### 前提・実現したいこと
2
- jsonファイルのデータをPDOを使ってデータテーブルにINSERTした後、そのデータを取得し県ごとの市町村の数を表示したいのですが、方法がわかりませんどなたか解決方法ご存知でしょうか?
2
+ jsonファイルのデータをPDOを使ってデータテーブルにINSERTした後、そのデータを取得し県ごとの市町村の数を表示したいのです。
3
+ postcodeの先頭1-2文字目とprefecture_idがマッチしているようなので、マッチしていたら変数にcitycodeを代入して、代入された件数を数えるという処理を書いてみたのですが、件数がおかしくなります。どなたか解決方法ご存知でしょうか?
3
4
 
4
5
  テーブル名 | カラム名 | json.file ( )内はjsonファイル内の対象の値を意味します
5
6
  1. large_areaテーブル

3

質問を編集

2022/01/19 03:30

投稿

bruno7777
bruno7777

スコア3

test CHANGED
File without changes
test CHANGED
@@ -5,7 +5,7 @@
5
5
  1. large_areaテーブル
6
6
  カラム名: name(エリア名は自分で入れました), prefecture_name(name), prefecture_id(id)
7
7
 
8
- 2. prefectureテーブル                              カラム名 : prefecture_id(id), name(name)
8
+ 2. prefectureテーブル                                       カラム名 : prefecture_id(id), name(name)
9
9
 
10
10
  3. cityテーブル
11
11
  カラム名:name(city.city) , citycode(city.citycode)

2

何がわからないかを具体的に記入しました。

2022/01/19 03:29

投稿

bruno7777
bruno7777

スコア3

test CHANGED
File without changes
test CHANGED
@@ -1,12 +1,14 @@
1
1
  ### 前提・実現したいこと
2
- jsonファイルのデータをPDOを使ってデータテーブルにINSERTした後、そのデータを取得し県ごとの市町村の数を表示したいです。
3
-
4
- prefectureとcityテーブルからレコードを取得し、prefecture_idとcitycodeがマッチしているとcitycodeを変数($num_of_city)に代入する→count関数で市町村取得、表示。とやってみたのですが、citycodeの件数が件ごとに多かったりに少なかったりします(北海道0件、青森から群馬県は7件、埼玉から長野は119件)。どなたか解決方法ご存知でしょうか?
5
-
6
- [テーブル名:カラム名 : json.file]
7
- 1. large_area : name(エリア名は自分で入れました), prefecture_name('name), prefecture_id('id)
8
- 2. prefecture : prefecture_id('id'), name('name')
9
- 3. city : name('city') , citycode('citycode')
2
+ jsonファイルのデータをPDOを使ってデータテーブルにINSERTした後、そのデータを取得し県ごとの市町村の数を表示したいですが、方法がわかりませんどなたか解決方法ご存知でしょうか?
3
+
4
+ テーブル名 | カラム名 | json.file ( )内はjsonファイル内対象の値意味します
5
+ 1. large_areaテーブル
6
+ カラム名: name(エリア名は自分で入れました), prefecture_name(name), prefecture_id(id)
7
+
8
+ 2. prefectureテーブル                              カラム名 : prefecture_id(id), name(name)
9
+
10
+ 3. cityテーブル
11
+ カラム名:name(city.city) , citycode(city.citycode)
10
12
 
11
13
  ```json.file
12
14
  [{

1

2022/01/19 00:52

投稿

bruno7777
bruno7777

スコア3

test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,7 @@
1
1
  ### 前提・実現したいこと
2
- jsonファイルのデータ(都道府県の県名、地方名、市町村名、郵便番号、県のID)をPDOを使ってデータテーブルにINSERTした後、そのデータを取得し県ごとの市町村の数を表示したいですが、なかなかうまくいきませんどなたか解決方法ご存知でしょうか?
2
+ jsonファイルのデータをPDOを使ってデータテーブルにINSERTした後、そのデータを取得し県ごとの市町村の数を表示したいです。
3
+
4
+ prefectureとcityテーブルからレコードを取得し、prefecture_idとcitycodeがマッチしているとcitycodeを変数($num_of_city)に代入する→count関数で市町村の数を取得、表示。とやってみたのですが、citycodeの件数が件ごとに多かったりに少なかったりします(北海道0件、青森から群馬県は7件、埼玉から長野は119件)。どなたか解決方法ご存知でしょうか?
3
5
 
4
6
  [テーブル名:カラム名 : json.file]
5
7
  1. large_area : name(エリア名は自分で入れました), prefecture_name('name), prefecture_id('id)
@@ -207,14 +209,12 @@
207
209
  $dbh = new PDO($dsn, $user, $password);
208
210
  [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,] ;
209
211
  print ('接続に成功しました。<br>');
210
- print "<br>";
212
+ print "<br>";
211
-
212
213
 
213
214
  foreach ($json as $key => $val) {
214
215
  foreach($val as $key2 => $val2){
215
216
  $name = $val2['name'];
216
- $id = $val2['id'];
217
+ $id = $val2['id'];
217
-
218
218
 
219
219
  $sql = "INSERT INTO prefecture (name, prefecture_id) VALUES (:prefecture_name, :id)";
220
220
  $stmt = $dbh -> prepare($sql);
@@ -231,25 +231,20 @@
231
231
  $res2 = $dbh -> query($sql6);
232
232
  $data2 = $res2 -> fetchAll();
233
233
 
234
-
235
234
  $num_of_city = [];
236
235
  foreach($data1 as $prefecture_data){
237
236
  echo $prefecture_data['name'] . "</br>";
238
237
  echo "</br>";
239
238
  foreach($data2 as $city_info){
240
239
  if(substr($city_info['citycode'], 1, 2) == $prefecture_data['prefecture_id']){
241
- $num_of_city = $city_info['citycode'];
240
+ $num_of_city [] = $city_info['citycode'];
242
241
  }
243
242
  }
244
243
  echo count($num_of_city);
245
244
  }
246
-
247
-
245
+
248
246
  } catch (PDOException $e) {
249
247
  print('エラーが発生しました:' . $e->getMessage());
250
248
  die();
251
249
  }
252
250
  ```
253
-
254
- ### 補足情報(FW/ツールのバージョンなど)
255
- Docker上でデータベース構築しており、sequel proでMysqlにアクセスしてます