質問編集履歴

10

書式の改善

2018/02/21 09:15

投稿

T.FUJII
T.FUJII

スコア21

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,9 @@
12
12
 
13
13
  の ”DBにCSVファイルを入力” 部分の質問になります。
14
14
 
15
+ このプログラムはartisanコマンドで呼び出され実行されます。
16
+
15
- 現在csvを読み込んで配列に格納し、その配列をもとにDBのデータを更新するプログラムを書いています。
17
+ csvを読み込んで配列に格納し、その配列をもとにDBのデータを更新するプログラムす。
16
18
 
17
19
 
18
20
 

9

書式の改善

2018/02/21 09:15

投稿

T.FUJII
T.FUJII

スコア21

test CHANGED
@@ -1 +1 @@
1
- 文字コードの変換について(PHP)
1
+ 文字コードsjisの変換について
test CHANGED
@@ -10,6 +10,8 @@
10
10
 
11
11
 
12
12
 
13
+ の ”DBにCSVファイルを入力” 部分の質問になります。
14
+
13
15
  現在csvを読み込んで配列に格納し、その配列をもとにDBのデータを更新するプログラムを書いています。
14
16
 
15
17
 

8

誤字の修正

2018/02/21 09:09

投稿

T.FUJII
T.FUJII

スコア21

test CHANGED
File without changes
test CHANGED
@@ -36,31 +36,47 @@
36
36
 
37
37
  ```php
38
38
 
39
- string(13) "001r357820094"
39
+ array(11) {
40
40
 
41
- string(3) "001"
41
+  [0]=>
42
42
 
43
+  string(13) "001r357820094"
44
+
45
+  [1]=>
46
+
47
+  string(3) "001"
48
+
49
+  [2]=>
50
+
43
- string(57) "あいう機構",00-1234-5678""
51
+  string(57) "あいう機構",00-1234-5678""
44
52
 
45
53
  ```
46
54
 
47
55
 
48
56
 
49
- csvの区切り文字がうまく読まれません。
57
+ csvの区切り文字がうまく読まれません。本来は[3]に下記のように入るはずです。
50
-
51
- 本来は4番目に下記のように入るはずです。
52
58
 
53
59
 
54
60
 
55
61
  ```php
56
62
 
57
- string(13) "001r357820094"
63
+ array(10) {
58
64
 
59
- string(3) "001"
65
+  [0]=>
60
66
 
61
- string(57) "あいう機構"
67
+ string(13) "001r357820094"
62
68
 
69
+  [1]=>
70
+
71
+ string(3) "001"
72
+
73
+  [2]=>
74
+
75
+ string(57) "あいう機構"
76
+
77
+  [3]=>
78
+
63
- string(12) "00-1234-5678"
79
+ string(12) "00-1234-5678"
64
80
 
65
81
  ```
66
82
 
@@ -70,7 +86,7 @@
70
86
 
71
87
 
72
88
 
73
- しかし読み込まれるcsvはsjis固定(エクセルの関係で)であり、それをうまくデータベースに戻さなければならず、どう解決すればいいかわかりません。
89
+ しかし読み込まれるcsvの文字コードはsjis(エクセルの保存関係で)であり、それをうまくデータベースに戻さなければならず、どう解決すればいいかわかりません。
74
90
 
75
91
 
76
92
 

7

記述の修正

2018/02/21 09:05

投稿

T.FUJII
T.FUJII

スコア21

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,12 @@
1
1
  ###前提・実現したいこと
2
+
3
+
4
+
5
+ **全体の流れ**
6
+
7
+
8
+
9
+ DBからCSVファイルを出力 → ユーザがそのCSVファイルをエクセルで編集 → DBにCSVファイルを入力
2
10
 
3
11
 
4
12
 
@@ -10,7 +18,7 @@
10
18
 
11
19
 
12
20
 
13
- そこで、下記のような**長いよ**エラーが出てしまいました。
21
+ 下記のエラーが出てしまいました。
14
22
 
15
23
 
16
24
 
@@ -40,11 +48,17 @@
40
48
 
41
49
  csvの区切り文字がうまく読まれません。
42
50
 
43
- 本来は配列の4番目に下記のように入るはずです。
51
+ 本来は4番目に下記のように入るはずです。
44
52
 
45
53
 
46
54
 
47
55
  ```php
56
+
57
+ string(13) "001r357820094"
58
+
59
+ string(3) "001"
60
+
61
+ string(57) "あいう機構"
48
62
 
49
63
  string(12) "00-1234-5678"
50
64
 
@@ -60,67 +74,69 @@
60
74
 
61
75
 
62
76
 
63
- またsjisのファイルをsjis-winとしてmb_convert_variablesをかけていいのでしょうか?そうすることでハシゴの高(髙)などの問題は解決できました。しかしそれがいことなのかはわかっていません。
77
+ またsjisのファイルをsjis-winとしてmb_convert_variablesをかけていいのでしょうか?そうすることでハシゴの高(髙)などの問題は解決できました。しかしそれがやってことなのかはわかっていません。
64
78
 
65
79
 
66
80
 
67
81
  csvの読み込みは、下記のようにSplFileObjectを使い、それをlist関数を使い変数に詰めています。
68
82
 
83
+ (変数名$aなどは簡略化して書いています)
84
+
69
85
 
70
86
 
71
87
  ```php
72
88
 
73
- public function handle()
89
+ public function handle()
74
90
 
75
- {
91
+ {
76
92
 
77
- // CSVファイル読み込み
93
+ // CSVファイル読み込み
78
94
 
79
- $filePath = './aaa.csv';
95
+ $filePath = './aaa.csv';
80
96
 
81
- $file = new SplFileObject($filePath);
97
+ $file = new SplFileObject($filePath);
82
98
 
83
- $file->setFlags(SplFileObject::READ_CSV);
99
+ $file->setFlags(SplFileObject::READ_CSV);
84
100
 
85
101
 
86
102
 
87
- // ファイル内のデータをループ
103
+ // ファイル内のデータをループ
88
104
 
89
- foreach ($file as $row) {
105
+ foreach ($file as $row) {
90
106
 
91
- // 文字コード変換
107
+ // 文字コード変換
92
108
 
93
- mb_convert_variables('utf8', 'sjis-win', $row);
109
+ mb_convert_variables('utf8', 'sjis-win', $row);
94
110
 
95
111
 
96
112
 
97
- // list関数を使い変数にデータを格納
113
+ // list関数を使い変数にデータを格納
98
114
 
99
- list(
115
+ list(
100
116
 
101
- $a,
117
+ $a,
102
118
 
103
- $b,
119
+ $b,
104
120
 
105
- $c,
121
+ $c,
106
122
 
107
- $d,
123
+ $d,
108
124
 
109
- $e,
125
+ $e,
110
126
 
111
- $f,
127
+ $f,
112
128
 
113
- $g,
129
+ $g,
114
130
 
115
- $h,
131
+ $h,
116
132
 
117
- $i,
133
+ $i,
118
134
 
119
- $j,
135
+ $j,
120
136
 
121
- $k
137
+ $k
122
138
 
123
- ) = $row;
139
+ ) = $row;
124
140
 
125
141
 
126
142
 
@@ -128,9 +144,7 @@
128
144
 
129
145
 
130
146
 
131
- その後、DBは下記のようにクエリービルダーを使いアップデートしています。
147
+ その後、DBは下記のようにクエリービルダーを使い必要項目だけアップデートしています。
132
-
133
- おかしいデータの手前でexit()して、そこまではうまく入ることを確認できています。
134
148
 
135
149
  DBはutf8-unicode-ciでMySQLを使っています。
136
150
 
@@ -138,17 +152,17 @@
138
152
 
139
153
  ```php
140
154
 
141
- // CSVから取得したデータをDBに戻す
155
+ // CSVから取得したデータをDBに戻す
142
156
 
143
- DB::table('test_database')->where('a', $a)->update([
157
+ DB::table('test_database')->where('a', $a)->update([
144
158
 
145
- 'b' => $b,
159
+ 'b' => $b,
146
160
 
147
- 'c' => $c,
161
+ 'c' => $c,
148
162
 
149
- 'updated_at' => date("Y-m-d H:i:s")
163
+ 'updated_at' => date("Y-m-d H:i:s")
150
164
 
151
- ]);
165
+ ]);
152
166
 
153
167
  ```
154
168
 
@@ -158,6 +172,8 @@
158
172
 
159
173
 
160
174
 
175
+ 開発環境:Vagrant + VirtualBox / Homestead
176
+
161
177
  言語:php-7.1.14 (NTS)
162
178
 
163
179
  フレームワーク:Laravel5.5 (LTS)

6

2018/02/21 08:59

投稿

T.FUJII
T.FUJII

スコア21

test CHANGED
File without changes
test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  string(3) "001"
34
34
 
35
- string(57) "機構",00-1234-5678""
35
+ string(57) "あいう機構",00-1234-5678""
36
36
 
37
37
  ```
38
38
 

5

2018/02/20 11:21

投稿

T.FUJII
T.FUJII

スコア21

test CHANGED
File without changes
test CHANGED
@@ -160,7 +160,7 @@
160
160
 
161
161
  言語:php-7.1.14 (NTS)
162
162
 
163
- フレームワーク:Laravel5.5
163
+ フレームワーク:Laravel5.5 (LTS)
164
164
 
165
165
  サーバー:nginx
166
166
 

4

2018/02/20 11:20

投稿

T.FUJII
T.FUJII

スコア21

test CHANGED
File without changes
test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
 
24
24
 
25
- 原因箇所をvar_dumpで見ると下記のようになっており、
25
+ 該当箇所をvar_dumpで見ると下記のようになっており、
26
26
 
27
27
 
28
28
 
@@ -56,7 +56,7 @@
56
56
 
57
57
 
58
58
 
59
- しかし読み込まれるcsvはsjis固定であり、それをうまくデータベースに戻さなければならず、どう解決すればいいかわかりません。
59
+ しかし読み込まれるcsvはsjis固定(エクセルの関係)であり、それをうまくデータベースに戻さなければならず、どう解決すればいいかわかりません。
60
60
 
61
61
 
62
62
 
@@ -130,7 +130,7 @@
130
130
 
131
131
  その後、DBは下記のようにクエリービルダーを使いアップデートしています。
132
132
 
133
- ここはおかしいデータの手前でexit()して、そこまではうまく入ることを確認できました
133
+ おかしいデータの手前でexit()して、そこまではうまく入ることを確認できてい
134
134
 
135
135
  DBはutf8-unicode-ciでMySQLを使っています。
136
136
 

3

2018/02/20 11:19

投稿

T.FUJII
T.FUJII

スコア21

test CHANGED
File without changes
test CHANGED
@@ -158,9 +158,9 @@
158
158
 
159
159
 
160
160
 
161
- 言語:php-7.1.14-Win32-VC14-x64 (ノンスレッドセーフ)
161
+ 言語:php-7.1.14 (NTS)
162
162
 
163
- フレームワーク:laravel (Homestead)
163
+ フレームワーク:Laravel5.5
164
164
 
165
165
  サーバー:nginx
166
166
 

2

文法の修正

2018/02/20 11:17

投稿

T.FUJII
T.FUJII

スコア21

test CHANGED
File without changes
test CHANGED
@@ -158,7 +158,7 @@
158
158
 
159
159
 
160
160
 
161
- 言語:PHP
161
+ 言語:php-7.1.14-Win32-VC14-x64 (ノンスレッドセーフ)
162
162
 
163
163
  フレームワーク:laravel (Homestead)
164
164
 

1

文法の修正

2018/02/20 08:34

投稿

T.FUJII
T.FUJII

スコア21

test CHANGED
File without changes
test CHANGED
@@ -1,10 +1,24 @@
1
+ ###前提・実現したいこと
2
+
3
+
4
+
1
5
  現在csvを読み込んで配列に格納し、その配列をもとにDBのデータを更新するプログラムを書いています。
6
+
7
+
8
+
9
+ ###発生している問題・エラーメッセージ
10
+
11
+
2
12
 
3
13
  そこで、下記のような**長いよ**エラーが出てしまいました。
4
14
 
5
15
 
6
16
 
7
- SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'phone_number' at row 16876
17
+ > SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'phone_number' at row 16876
18
+
19
+
20
+
21
+ ###該当のソースコード
8
22
 
9
23
 
10
24
 
@@ -137,3 +151,17 @@
137
151
  ]);
138
152
 
139
153
  ```
154
+
155
+
156
+
157
+ ###補足情報(言語/FW/ツール等のバージョンなど)
158
+
159
+
160
+
161
+ 言語:PHP
162
+
163
+ フレームワーク:laravel (Homestead)
164
+
165
+ サーバー:nginx
166
+
167
+ DB:MySQL