teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

見直し

2020/02/17 08:31

投稿

退会済みユーザー
answer CHANGED
@@ -1,11 +1,14 @@
1
1
  $valに納まるデータのどれかに、「,」とか「"」が紛れ込んでいませんか。
2
+ 改行コード、「"」などもひっかかる原因になります。
2
3
  あるいは`NULL`ということはありませんか。
4
+ 文字列連結前に丁寧に検証して余計な文字を取り去る処理を加えないと、不完全なCSVになるだけです。
3
5
 
4
6
  「SELECT *」みたいな雑なSELECT文じゃなく、
5
7
  一つ一つカラム名を指定した方が、テーブルの構造の変更に耐性が付きますのでおすすめです。
6
8
 
7
9
  自前で文字列連結せず、fputcsv()を使うか、SplFileObject::fputcsv()を使って処理したほうが賢明です。
8
- 「SplFileObject csv 書き出し」の事例を研究してみるなど。
10
+ 「SplFileObject csv 書き出し」
11
+ 「csv 書き出し SJIS-win」の事例を研究してみるなど。
9
12
 
10
13
  私ならUTF-8で一旦一時ファイルに出力した後、
11
14
  改めて読み込んで変換して保存し直すかな。

4

見直し

2020/02/17 08:31

投稿

退会済みユーザー
answer CHANGED
@@ -5,9 +5,9 @@
5
5
  一つ一つカラム名を指定した方が、テーブルの構造の変更に耐性が付きますのでおすすめです。
6
6
 
7
7
  自前で文字列連結せず、fputcsv()を使うか、SplFileObject::fputcsv()を使って処理したほうが賢明です。
8
+ 「SplFileObject csv 書き出し」の事例を研究してみるなど。
8
9
 
9
- それと、一行ずつ? SJIS-winに変換していますが、
10
- 私ならUTF-8で一旦出力した後、
10
+ 私ならUTF-8で一旦一時ファイルに出力した後、
11
- ファイル全体を変換かけてしまいま
11
+ 改めて読み込んで変換保存かな
12
12
 
13
13
  重箱の隅:\r\nと\nが混在していていいのか?

3

見直し

2020/02/17 08:21

投稿

退会済みユーザー
answer CHANGED
@@ -8,4 +8,6 @@
8
8
 
9
9
  それと、一行ずつ? SJIS-winに変換していますが、
10
10
  私ならUTF-8で一旦出力した後、
11
- ファイル全体を変換かけてしまいますね。
11
+ ファイル全体を変換かけてしまいますね。
12
+
13
+ 重箱の隅:\r\nと\nが混在していていいのか?

2

見直し

2020/02/17 08:16

投稿

退会済みユーザー
answer CHANGED
@@ -1,3 +1,11 @@
1
1
  $valに納まるデータのどれかに、「,」とか「"」が紛れ込んでいませんか。
2
+ あるいは`NULL`ということはありませんか。
2
3
 
4
+ 「SELECT *」みたいな雑なSELECT文じゃなく、
5
+ 一つ一つカラム名を指定した方が、テーブルの構造の変更に耐性が付きますのでおすすめです。
6
+
3
- 自前で文字列連結せず、fputcsv()を使うか、SplFileObject::fputcsv()を使って処理したほうが賢明です。
7
+ 自前で文字列連結せず、fputcsv()を使うか、SplFileObject::fputcsv()を使って処理したほうが賢明です。
8
+
9
+ それと、一行ずつ? SJIS-winに変換していますが、
10
+ 私ならUTF-8で一旦出力した後、
11
+ ファイル全体を変換かけてしまいますね。

1

見直し

2020/02/17 08:14

投稿

退会済みユーザー
answer CHANGED
@@ -1,1 +1,3 @@
1
- $valに納まるデータのどれかに、「,」とか「"」が紛れ込んでいませんか。
1
+ $valに納まるデータのどれかに、「,」とか「"」が紛れ込んでいませんか。
2
+
3
+ 自前で文字列連結せず、fputcsv()を使うか、SplFileObject::fputcsv()を使って処理したほうが賢明です。