回答編集履歴
1
ソースコード更新
test
CHANGED
@@ -6,13 +6,19 @@
|
|
6
6
|
|
7
7
|
<?php
|
8
8
|
|
9
|
-
function t
|
9
|
+
function formatting_to_sql($v) {
|
10
|
+
|
11
|
+
//空白文字を除去
|
12
|
+
|
13
|
+
$v = trim($v);
|
14
|
+
|
15
|
+
|
10
16
|
|
11
17
|
if( preg_match('/[^\d]/',$v) ){
|
12
18
|
|
13
|
-
//数字以外の文字を含む場合は
|
19
|
+
//数字以外の文字を含む場合はテキストとして判別して文字コードを変えて返す
|
14
20
|
|
15
|
-
return $v;
|
21
|
+
return mb_convert_encoding($v, "UTF-8", "SJIS");
|
16
22
|
|
17
23
|
}
|
18
24
|
|
@@ -24,7 +30,7 @@
|
|
24
30
|
|
25
31
|
} else {
|
26
32
|
|
27
|
-
//テキスト
|
33
|
+
//テキストが数字で0以外の数字があったら先頭の0を省いて返す
|
28
34
|
|
29
35
|
return intval(preg_replace('/^0*([1-9][0-9]*)$/','$1',$v,1));
|
30
36
|
|
@@ -42,29 +48,57 @@
|
|
42
48
|
|
43
49
|
//一行ずつCSVからデータを取り出しつつループ
|
44
50
|
|
51
|
+
$i = 0;
|
52
|
+
|
45
53
|
while( $line = fgetcsv($fp) ){
|
46
54
|
|
47
|
-
|
55
|
+
//ヘッダ行からセル名を記憶する
|
48
56
|
|
49
|
-
|
57
|
+
if( $i == 0){
|
50
58
|
|
51
|
-
|
59
|
+
$cell_sql = array();
|
52
60
|
|
53
|
-
foreach( $line as $
|
61
|
+
foreach( $line as $v ){
|
54
62
|
|
63
|
+
$cell_sql[] = sprintf("%s",$v);
|
64
|
+
|
65
|
+
}
|
66
|
+
|
67
|
+
} else {
|
68
|
+
|
69
|
+
//一行ずつ取り出したCSVの各セルをトリム関数を使ってSQL用に成形
|
70
|
+
|
71
|
+
$line_sql = array();
|
72
|
+
|
73
|
+
foreach( $line as $v){
|
74
|
+
|
55
|
-
$line_sql[] = sprintf("'%s'",t
|
75
|
+
$line_sql[] = sprintf("'%s'",formatting_to_sql($v));
|
76
|
+
|
77
|
+
}
|
78
|
+
|
79
|
+
//まとめたセルをはき出してSQLを成形
|
80
|
+
|
81
|
+
$sql = sprintf(
|
82
|
+
|
83
|
+
'INSERT INTO table (%s) values (%s);'
|
84
|
+
|
85
|
+
,mysql_real_escape_string(implode(',',$cell_sql))
|
86
|
+
|
87
|
+
,mysql_real_escape_string(implode(',',$line_sql))
|
88
|
+
|
89
|
+
);
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
//SQL実行
|
94
|
+
|
95
|
+
//...
|
56
96
|
|
57
97
|
}
|
58
98
|
|
59
|
-
//
|
99
|
+
//ループカウンタをインクリメント
|
60
100
|
|
61
|
-
$sql = sprintf('INSERT INTO table values (%s);',implode(',',$line_sql));
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
//SQL実行
|
66
|
-
|
67
|
-
|
101
|
+
$i++;
|
68
102
|
|
69
103
|
}
|
70
104
|
|
@@ -74,6 +108,4 @@
|
|
74
108
|
|
75
109
|
fclose($fp);
|
76
110
|
|
77
|
-
|
78
|
-
|
79
111
|
```
|