回答編集履歴

5

加筆修正

2018/10/11 07:53

投稿

退会済みユーザー
test CHANGED
@@ -88,6 +88,8 @@
88
88
 
89
89
  みたいになります。
90
90
 
91
+ これは、あくまで、一行読み込んだら確実に名前、電話番号、住所を書き換える前提のものです。
92
+
91
93
 
92
94
 
93
95
  phpmyadminで出来ることしかしないのではなく、

4

加筆修正

2018/10/11 07:53

投稿

退会済みユーザー
test CHANGED
@@ -98,4 +98,10 @@
98
98
 
99
99
 
100
100
 
101
+ これも読もう:
102
+
103
+ [PHPでデータベースに接続するときのまとめ - Qiita](https://qiita.com/mpyw/items/b00b72c5c95aac573b71)
104
+
105
+
106
+
101
107
  (ちなみに、専門はPostgreSQLなので、本職のmysql-erさんに怒られるかなとヒヤヒヤしております。あくまで机上デバッグで実行してないので。)

3

見直し

2018/10/11 07:51

投稿

退会済みユーザー
test CHANGED
@@ -30,13 +30,59 @@
30
30
 
31
31
  mysqlではテーブル名やカラム名をバッククォートで囲み
32
32
 
33
- ```
33
+ ```php
34
+
35
+ try {
36
+
37
+ $pdo = new PDO($dsn, $username, $password, [
38
+
39
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
40
+
41
+ PDO::ATTR_EMULATE_PREPARES => false,
42
+
43
+ ]); // $dsn, $username, $passwordは適切に設定済として。
44
+
45
+ $sql = <<<EOT
34
46
 
35
47
  UPDATE `target_table`
36
48
 
37
- SET `target_column1` = 'ABC'
49
+ SET `name` = :name, `tel` = :tel, `address` = :address
38
50
 
39
- WHERE `id` = 1;
51
+ WHERE `id` = :id;
52
+
53
+ EOT;
54
+
55
+ $stmt = $pdo->prepare($sql);
56
+
57
+ // ここでCSVファイルオープンして、while()ループがはじまるとか
58
+
59
+ // while()ループの内側でファイルから一行読み込んで、項目ごとにバラしたとして
60
+
61
+ $stmt->bindValue(':name', $csv_name, PDO::PARAM_STR);
62
+
63
+ $stmt->bindValue(':tel', $csv_tel, PDO::PARAM_STR);
64
+
65
+ $stmt->bindValue(':address', $csv_address, PDO::PARAM_STR);
66
+
67
+ $stmt->bindValue(':id', $csv_id, PDO::PARAM_INT);
68
+
69
+ $stmt->execute();
70
+
71
+ // while()ループ閉じ
72
+
73
+ // csvファイルクローズ
74
+
75
+ $pdo->commit(); // これを忘れるとデータベースに反映されない
76
+
77
+ } catch (PDOException $e) {
78
+
79
+ $pdo->rollBack();
80
+
81
+ throw $e;
82
+
83
+ }
84
+
85
+
40
86
 
41
87
  ```
42
88
 
@@ -49,3 +95,7 @@
49
95
  せっかくデータベースを操作するのにSQL文を使えたほうが
50
96
 
51
97
  応用が効きますので是非お試しいただければ。
98
+
99
+
100
+
101
+ (ちなみに、専門はPostgreSQLなので、本職のmysql-erさんに怒られるかなとヒヤヒヤしております。あくまで机上デバッグで実行してないので。)

2

加筆修正

2018/10/11 07:51

投稿

退会済みユーザー
test CHANGED
@@ -5,3 +5,47 @@
5
5
  CSVを読み込みつつ、当該カラムを取り出し、
6
6
 
7
7
  UPDATE文に当てはめてクエリー実行する。
8
+
9
+
10
+
11
+ [13.2.11 UPDATE 構文](https://dev.mysql.com/doc/refman/5.6/ja/update.html)
12
+
13
+
14
+
15
+ ```
16
+
17
+ UPDATE (テーブル名)
18
+
19
+ SET (更新対象のカラム名) = (更新したいテキストや数字)
20
+
21
+ WHERE (ユニークキーになるカラム名) = (ユニークキーの値);
22
+
23
+ ```
24
+
25
+
26
+
27
+ みたいな文法になります。
28
+
29
+ 値として文字列を与えるときはシングルクォートで囲み
30
+
31
+ mysqlではテーブル名やカラム名をバッククォートで囲み
32
+
33
+ ```
34
+
35
+ UPDATE `target_table`
36
+
37
+ SET `target_column1` = 'ABC'
38
+
39
+ WHERE `id` = 1;
40
+
41
+ ```
42
+
43
+ みたいになります。
44
+
45
+
46
+
47
+ phpmyadminで出来ることしかしないのではなく、
48
+
49
+ せっかくデータベースを操作するのにSQL文を使えたほうが
50
+
51
+ 応用が効きますので是非お試しいただければ。

1

加筆修正

2018/10/11 05:05

投稿

退会済みユーザー
test CHANGED
@@ -1,7 +1,7 @@
1
1
  CSVデータを加工してSQL文を作成すればいいじゃない。
2
2
 
3
+ CSVに対象テーブルでのユニークキーになる情報もあるでしょうから、
3
4
 
4
-
5
- CSVを読み込みつつ、
5
+ CSVを読み込みつつ、当該カラムを取り出し、
6
6
 
7
7
  UPDATE文に当てはめてクエリー実行する。