質問編集履歴

3

誤字を編集

2020/04/27 05:01

投稿

ennkai2414
ennkai2414

スコア4

test CHANGED
@@ -1 +1 @@
1
- PHP内で、phpadminでテーブル内の(カラム名、データ型)の取得記載方法がわかりません
1
+ PHP内で、MYSQLでテーブル内の(カラム名、データ型)の取得記載方法がわかりません
test CHANGED
@@ -1,4 +1,6 @@
1
+ PHP phpMYadminを使用してます。
2
+
1
- PHP phpadminでテーブル内の(カラム名、データ型)の取得方法がわかりません。
3
+ テーブル内の(カラム名、データ型)の取得方法がわかりません。
2
4
 
3
5
 
4
6
 

2

最後に新しい質問を追加

2020/04/27 05:01

投稿

ennkai2414
ennkai2414

スコア4

test CHANGED
File without changes
test CHANGED
@@ -313,3 +313,7 @@
313
313
 
314
314
 
315
315
  ?>
316
+
317
+
318
+
319
+ また、サブテーブルのインポートが成功しているのかしていないのかの判断方法が分かれば教えてください。

1

ソースコードを追加しました。

2020/04/27 04:59

投稿

ennkai2414
ennkai2414

スコア4

test CHANGED
@@ -1 +1 @@
1
- PHP phpadminでテーブル内の(カラム名、データ型)の取得方法がわかりません
1
+ PHP内で、phpadminでテーブル内の(カラム名、データ型)の取得記載方法がわかりません
test CHANGED
@@ -5,3 +5,311 @@
5
5
  PDO接続 -> テーブル名指定 -> カラム名、データ型を取得の順番で行いたいのですが、取得方法がわかりません。
6
6
 
7
7
  何かいい方法はありますか?
8
+
9
+
10
+
11
+ 以下作成したソースコードです。
12
+
13
+ <?php
14
+
15
+ set_time_limit(0);
16
+
17
+
18
+
19
+ // コマンドライン パス取得
20
+
21
+ if($argc != 6){
22
+
23
+ echo "filepass,DBname,tablename,username,passwordを指定してください。";
24
+
25
+ exit(0);
26
+
27
+ }
28
+
29
+ $csv_path = $argv[1];
30
+
31
+ $db_name = $argv[2];
32
+
33
+ $table_name = $argv[3];
34
+
35
+ $user_name = $argv[4];
36
+
37
+ $password = $argv[5];
38
+
39
+
40
+
41
+ try {
42
+
43
+ if(($handle_csv_file = fopen($csv_path, "r")) !== FALSE) {
44
+
45
+ $dbh = null;
46
+
47
+ // DB接続
48
+
49
+ $dbh = new PDO('mysql:host=127.0.0.1; dbname='. $db_name.'; charset=utf8', $user_name, $password);
50
+
51
+
52
+
53
+ /*
54
+
55
+ dbからカラム名取得
56
+
57
+ */
58
+
59
+
60
+
61
+ /*
62
+
63
+ 取得したカラム名をもとにテーブル作成
64
+
65
+ $test_inport_table = 'CREATE TABLE test_inport (
66
+
67
+
68
+
69
+  ここに取得したカラム情報、データ型を要素分追加
70
+
71
+
72
+
73
+ 例:
74
+
75
+ id BIGINT(20) AUTO_INCREMENT PRIMARY KEY,
76
+
77
+ synonym1 VARCHAR(50)。。。。。
78
+
79
+
80
+
81
+ 実際は配列で追加?
82
+
83
+
84
+
85
+
86
+
87
+ ) engine=innodb default charset=utf8';
88
+
89
+ */
90
+
91
+ // テーブル作成実行
92
+
93
+ $table_create = $dbh->query($test_inport_table);
94
+
95
+
96
+
97
+ //ファイル書き込み
98
+
99
+ if(($column_name = fgetcsv($handle_csv_file)) !== FALSE) {
100
+
101
+ // インサート先指定
102
+
103
+ $insert = null;
104
+
105
+ $insert = "INSERT INTO test_inport(";
106
+
107
+ $count_column_name = count($column_name);
108
+
109
+ for($i=1;$i<$count_column_name;$i++) {
110
+
111
+ if($column_name[$i]==="") {
112
+
113
+ continue;
114
+
115
+ }
116
+
117
+ $column_name[$i] = mb_convert_encoding($column_name[$i], 'UTF-8', 'SJIS-win');
118
+
119
+ if($i===1){
120
+
121
+ $insert = $insert.$column_name[$i];
122
+
123
+ }else{
124
+
125
+ $insert = $insert.",".$column_name[$i];
126
+
127
+ }
128
+
129
+ }
130
+
131
+ $insert = $insert.") VALUES (:";
132
+
133
+ for($i=1;$i<$count_column_name;$i++) {
134
+
135
+ if($column_name[$i]==="") {
136
+
137
+ continue;
138
+
139
+ }
140
+
141
+ $column_name[$i] = mb_convert_encoding($column_name[$i], 'UTF-8', 'SJIS-win');
142
+
143
+
144
+
145
+ if($i===1){
146
+
147
+ $insert = $insert.$column_name[$i];
148
+
149
+ }else{
150
+
151
+ $insert = $insert.", :".$column_name[$i];
152
+
153
+ }
154
+
155
+ }
156
+
157
+ $insert = $insert.")";
158
+
159
+
160
+
161
+ // 実行準備
162
+
163
+ $insert_start= $dbh->prepare($insert);
164
+
165
+
166
+
167
+ if(!$insert_start){
168
+
169
+ $delet_table = "DROP TABLE test_inport";
170
+
171
+ $dbh->query($delet_table);
172
+
173
+ throw new Exception('インサート先指定失敗');
174
+
175
+ }
176
+
177
+
178
+
179
+ $title_skip = 1;
180
+
181
+ // ファイルポインタ有効時
182
+
183
+ while($handle_csv_file && !feof($handle_csv_file)) {
184
+
185
+ $input_csv = fgetcsv($handle_csv_file);
186
+
187
+ if($title_skip < 2) {
188
+
189
+ $title_skip++;
190
+
191
+ continue;
192
+
193
+ }
194
+
195
+ if(!$input_csv) {
196
+
197
+ continue;
198
+
199
+ }
200
+
201
+
202
+
203
+ // エンコード
204
+
205
+ for($i=1;$i<count($input_csv);$i++) {
206
+
207
+ if($input_csv[$i]==="") {
208
+
209
+ continue;
210
+
211
+ }
212
+
213
+ $input_csv[$i] = mb_convert_encoding($input_csv[$i], 'UTF-8', 'SJIS-win');
214
+
215
+ }
216
+
217
+
218
+
219
+ // インサート内容
220
+
221
+ $input_csv_array = [];
222
+
223
+ for($i=1;$i<count($input_csv);$i++) {
224
+
225
+ $input_csv_array[$column_name[$i]] = $input_csv[$i];
226
+
227
+ }
228
+
229
+ //実行
230
+
231
+ $insert_start->execute($input_csv_array);
232
+
233
+ // if($insert_start !== FALSE){
234
+
235
+ // throw new Exception('インサート失敗');
236
+
237
+ // }
238
+
239
+ }
240
+
241
+
242
+
243
+ if(!$test_inport_table){
244
+
245
+ $delet_table = "DROP TABLE test_inport";
246
+
247
+ $dbh->query($delet_table);
248
+
249
+ throw new Exception('インサート失敗');
250
+
251
+ }else{
252
+
253
+ // 上書き
254
+
255
+ $delet_table = "DROP TABLE $table_name";
256
+
257
+ $dbh->query($delet_table);
258
+
259
+ $rename = "ALTER TABLE test_inport RENAME $table_name";
260
+
261
+ $dbh->query($rename);
262
+
263
+ }
264
+
265
+
266
+
267
+ }else{
268
+
269
+ $delet_table = "DROP TABLE test_inport";
270
+
271
+ $dbh->query($delet_table);
272
+
273
+ throw new Exception('ファイル書き込み失敗');
274
+
275
+ }
276
+
277
+ }else{
278
+
279
+ throw new Exception('ファイル接続失敗');
280
+
281
+ }
282
+
283
+ // 接続終了
284
+
285
+ fclose($handle_csv_file);
286
+
287
+ $insert_start= null;
288
+
289
+ $dbh = null;
290
+
291
+
292
+
293
+ echo "成功";
294
+
295
+
296
+
297
+ // エラー
298
+
299
+ } catch(PDOException $e) {
300
+
301
+
302
+
303
+ $delet_table = "DROP TABLE test_inport";
304
+
305
+ $dbh->query($delet_table);
306
+
307
+ echo 'DB接続失敗:' . $e->getMessage();
308
+
309
+ exit();
310
+
311
+ }
312
+
313
+
314
+
315
+ ?>