質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

受付中

データベースにINSERTした値を取得し操作したいが方法がわからない

bruno7777
bruno7777

総合スコア3

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

1回答

0評価

0クリップ

179閲覧

投稿2022/01/18 08:42

編集2022/01/21 12:42

前提・実現したいこと

jsonファイルのデータをPDOを使ってデータテーブルにINSERTした後、そのデータを取得し県ごとの市町村の数を表示したいのです。
postcodeの先頭1-2文字目とprefecture_idがマッチしているようなので、マッチしていたら変数にcitycodeを代入して、代入された件数を数えるという処理を書いてみたのですが、件数がおかしくなります。どなたか解決方法ご存知でしょうか?

テーブル名 | カラム名 | json.file ( )内はjsonファイル内の対象の値を意味します

  1. large_areaテーブル
    カラム名: name(エリア名は自分で入れました), prefecture_name(name), prefecture_id(id)

  2. prefectureテーブル                                       カラム名 : prefecture_id(id), name(name)

  3. cityテーブル
    カラム名:name(city.city) , citycode(city.citycode)

json.file

[{ "01": { "id": "01", "name": "北海道", "short": "北海道", "kana": "ホッカイドウ", "en": "hokkaido", "city":[ {"citycode":"0010001","city":"札幌市中央区"}, {"citycode":"0010002","city":"札幌市北区"}, {"citycode":"0010003","city":"札幌市東区"}, {"citycode":"0010004","city":"札幌市白石区"}, {"citycode":"0010005","city":"札幌市豊平区"}, {"citycode":"0010006","city":"札幌市南区"}, {"citycode":"0010007","city":"札幌市西区"}, {"citycode":"0010008","city":"札幌市厚別区"}, {"citycode":"0010009","city":"札幌市手稲区"}, {"citycode":"0010010","city":"札幌市清田区"}, {"citycode":"0010011","city":"函館市"}, {"citycode":"0010012","city":"小樽市"}, {"citycode":"0010013","city":"旭川市"}, {"citycode":"0010014","city":"室蘭市"}, {"citycode":"0010015","city":"釧路市"}, {"citycode":"0010016","city":"帯広市"}, {"citycode":"0010017","city":"北見市"}, {"citycode":"0010018","city":"夕張市"}, {"citycode":"0010019","city":"岩見沢市"}, {"citycode":"0010020","city":"網走市"}, {"citycode":"0010021","city":"留萌市"}, {"citycode":"0010022","city":"苫小牧市"}, {"citycode":"0010023","city":"稚内市"}, {"citycode":"0010024","city":"美唄市"}, {"citycode":"0010025","city":"芦別市"}, {"citycode":"0010026","city":"江別市"}, {"citycode":"0010027","city":"赤平市"}, {"citycode":"0010028","city":"紋別市"}, {"citycode":"0010029","city":"士別市"}, {"citycode":"0010030","city":"名寄市"}, {"citycode":"0010031","city":"三笠市"}, {"citycode":"0010032","city":"根室市"}, {"citycode":"0010033","city":"千歳市"}, {"citycode":"0010034","city":"滝川市"}, {"citycode":"0010035","city":"砂川市"}, {"citycode":"0010036","city":"歌志内市"}, {"citycode":"0010037","city":"深川市"}, {"citycode":"0010038","city":"富良野市"}, {"citycode":"0010039","city":"登別市"}, {"citycode":"0010040","city":"恵庭市"}, {"citycode":"0010041","city":"伊達市"}, {"citycode":"0010042","city":"北広島市"}, {"citycode":"0010043","city":"石狩市"}, {"citycode":"0010044","city":"北斗市"}, {"citycode":"0010045","city":"石狩郡"}, {"citycode":"0010046","city":"松前郡"}, {"citycode":"0010047","city":"上磯郡"}, {"citycode":"0010048","city":"亀田郡"}, {"citycode":"0010049","city":"茅部郡"}, {"citycode":"0010050","city":"二海郡"}, {"citycode":"0010051","city":"山越郡"}, {"citycode":"0010052","city":"檜山郡"}, {"citycode":"0010053","city":"爾志郡"}, {"citycode":"0010054","city":"奥尻郡"}, {"citycode":"0010055","city":"瀬棚郡"}, {"citycode":"0010056","city":"久遠郡"}, {"citycode":"0010057","city":"島牧郡"}, {"citycode":"0010058","city":"寿都郡"}, {"citycode":"0010059","city":"磯谷郡"}, {"citycode":"0010060","city":"虻田郡"}, {"citycode":"0010061","city":"岩内郡"}, {"citycode":"0010062","city":"古宇郡"}, {"citycode":"0010063","city":"積丹郡"}, {"citycode":"0010064","city":"古平郡"}, {"citycode":"0010065","city":"余市郡"}, {"citycode":"0010066","city":"空知郡"}, {"citycode":"0010067","city":"夕張郡"}, {"citycode":"0010068","city":"樺戸郡"}, {"citycode":"0010069","city":"雨竜郡"}, {"citycode":"0010070","city":"上川郡"}, {"citycode":"0010071","city":"勇払郡"}, {"citycode":"0010072","city":"中川郡"}, {"citycode":"0010073","city":"増毛郡"}, {"citycode":"0010074","city":"留萌郡"}, {"citycode":"0010075","city":"苫前郡"}, {"citycode":"0010076","city":"天塩郡"}, {"citycode":"0010077","city":"宗谷郡"}, {"citycode":"0010078","city":"枝幸郡"}, {"citycode":"0010079","city":"礼文郡"}, {"citycode":"0010080","city":"利尻郡"}, {"citycode":"0010081","city":"網走郡"}, {"citycode":"0010082","city":"斜里郡"}, {"citycode":"0010083","city":"常呂郡"}, {"citycode":"0010084","city":"紋別郡"}, {"citycode":"0010085","city":"虻田郡"}, {"citycode":"0010086","city":"有珠郡"}, {"citycode":"0010087","city":"白老郡"}, {"citycode":"0010088","city":"沙流郡"}, {"citycode":"0010089","city":"新冠郡"}, {"citycode":"0010090","city":"浦河郡"}, {"citycode":"0010091","city":"様似郡"}, {"citycode":"0010092","city":"幌泉郡"}, {"citycode":"0010093","city":"日高郡"}, {"citycode":"0010094","city":"河東郡"}, {"citycode":"0010095","city":"河西郡"}, {"citycode":"0010096","city":"広尾郡"}, {"citycode":"0010097","city":"足寄郡"}, {"citycode":"0010098","city":"十勝郡"}, {"citycode":"0010099","city":"釧路郡"}, {"citycode":"0010100","city":"厚岸郡"}, {"citycode":"0010101","city":"川上郡"}, {"citycode":"0010102","city":"阿寒郡"}, {"citycode":"0010103","city":"白糠郡"}, {"citycode":"0010104","city":"野付郡"}, {"citycode":"0010105","city":"標津郡"}, {"citycode":"0010106","city":"目梨郡"} ] }, "02": { "id": "02", "name": "青森県", "short": "青森", "kana": "アオモリケン", "en": "aomori", "city":[ {"citycode":"0020001","city":"青森市"}, {"citycode":"0020002","city":"弘前市"}, {"citycode":"0020003","city":"八戸市"}, {"citycode":"0020004","city":"黒石市"}, {"citycode":"0020005","city":"五所川原市"}, {"citycode":"0020006","city":"十和田市"}, {"citycode":"0020007","city":"三沢市"}, {"citycode":"0020008","city":"むつ市"}, {"citycode":"0020009","city":"つがる市"}, {"citycode":"0020010","city":"平川市"}, {"citycode":"0020011","city":"東津軽郡"}, {"citycode":"0020012","city":"西津軽郡"}, {"citycode":"0020013","city":"中津軽郡"}, {"citycode":"0020014","city":"南津軽郡"}, {"citycode":"0020015","city":"北津軽郡"}, {"citycode":"0020016","city":"上北郡"}, {"citycode":"0020017","city":"下北郡"}, {"citycode":"0020018","city":"三戸郡"} ] }, "03": { "id": "03", "name": "岩手県", "short": "岩手", "kana": "イワテケン", "en": "iwate", "city":[ {"citycode":"0030001","city":"盛岡市"}, {"citycode":"0030002","city":"宮古市"}, {"citycode":"0030003","city":"大船渡市"}, {"citycode":"0030004","city":"花巻市"}, {"citycode":"0030005","city":"北上市"}, {"citycode":"0030006","city":"久慈市"}, {"citycode":"0030007","city":"遠野市"}, {"citycode":"0030008","city":"一関市"}, {"citycode":"0030009","city":"陸前高田市"}, {"citycode":"0030010","city":"釜石市"}, {"citycode":"0030011","city":"二戸市"}, {"citycode":"0030012","city":"八幡平市"}, {"citycode":"0030013","city":"奥州市"}, {"citycode":"0030014","city":"滝沢市"}, {"citycode":"0030015","city":"岩手郡"}, {"citycode":"0030016","city":"紫波郡"}, {"citycode":"0030017","city":"和賀郡"}, {"citycode":"0030018","city":"胆沢郡"}, {"citycode":"0030019","city":"西磐井郡"}, {"citycode":"0030020","city":"気仙郡"}, {"citycode":"0030021","city":"上閉伊郡"}, {"citycode":"0030022","city":"下閉伊郡"}, {"citycode":"0030023","city":"九戸郡"}, {"citycode":"0030024","city":"二戸郡"} ] }, 以下省略 ※沖縄(47)まであります

該当のソースコード

php

<?php //jsonファイル読み込み $json = file_get_contents("sample2.json"); $json = mb_convert_encoding($json, 'UTF-8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN'); $json = json_decode($json,true); //db接続 $dsn = 'mysql:host=mzn_db;dbname=mzn; charset=utf8'; $user = 'user'; $password = 'pass'; try { $dbh = new PDO($dsn, $user, $password); [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,] ; print ('接続に成功しました。<br>'); print "<br>"; foreach ($json as $key => $val) { foreach($val as $key2 => $val2){ $name = $val2['name']; $id = $val2['id']; $sql = "INSERT INTO prefecture (name, prefecture_id) VALUES (:prefecture_name, :id)"; $stmt = $dbh -> prepare($sql); $stmt->bindValue(':prefecture_name', $name); $stmt->bindValue(':id', $id); $stmt ->execute(); //県ごとの区の数を表示 $sql5 = "SELECT * FROM prefecture"; $res1 = $dbh -> query($sql5); $data1 = $res1 -> fetchAll(); $sql6 = "SELECT * FROM city"; $res2 = $dbh -> query($sql6); $data2 = $res2 -> fetchAll(); $num_of_city = []; foreach($data1 as $prefecture_data){ echo $prefecture_data['name'] . "</br>"; echo "</br>"; foreach($data2 as $city_info){ if(substr($city_info['citycode'], 1, 2) == $prefecture_data['prefecture_id']){ $num_of_city [] = $city_info['citycode']; } } echo count($num_of_city); } } catch (PDOException $e) { print('エラーが発生しました:' . $e->getMessage()); die(); }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

CHERRY

2022/01/18 09:19

> そのデータを取得し県ごとの市町村の数を表示したいのですが、なかなかうまくいきません。 うまくいきませんとは、どうなるのでしょうか? どのよううな状況が発生するのかを 発生している内容を具体的に記載していただけないでしょうか。
yambejp

2022/01/18 09:29

・INSERTの仕方がわからない ・INSERTしようとしたがエラーになる ・INSERTはできたが想定した集計作業ができない 状況を説明してください
bruno7777

2022/01/19 00:54

CHERRYさん、yambejpさん 大変失礼しました。具体的にどんな状況が起こっているのか記載しました。 ご指摘ありがとうございました

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです