回答編集履歴

5

加筆修正

2018/10/11 07:53

投稿

退会済みユーザー
answer CHANGED
@@ -43,6 +43,7 @@
43
43
 
44
44
  ```
45
45
  みたいになります。
46
+ これは、あくまで、一行読み込んだら確実に名前、電話番号、住所を書き換える前提のものです。
46
47
 
47
48
  phpmyadminで出来ることしかしないのではなく、
48
49
  せっかくデータベースを操作するのにSQL文を使えたほうが

4

加筆修正

2018/10/11 07:53

投稿

退会済みユーザー
answer CHANGED
@@ -48,4 +48,7 @@
48
48
  せっかくデータベースを操作するのにSQL文を使えたほうが
49
49
  応用が効きますので是非お試しいただければ。
50
50
 
51
+ これも読もう:
52
+ [PHPでデータベースに接続するときのまとめ - Qiita](https://qiita.com/mpyw/items/b00b72c5c95aac573b71)
53
+
51
54
  (ちなみに、専門はPostgreSQLなので、本職のmysql-erさんに怒られるかなとヒヤヒヤしております。あくまで机上デバッグで実行してないので。)

3

見直し

2018/10/11 07:51

投稿

退会済みユーザー
answer CHANGED
@@ -14,13 +14,38 @@
14
14
  みたいな文法になります。
15
15
  値として文字列を与えるときはシングルクォートで囲み
16
16
  mysqlではテーブル名やカラム名をバッククォートで囲み
17
- ```
17
+ ```php
18
+ try {
19
+ $pdo = new PDO($dsn, $username, $password, [
20
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
21
+ PDO::ATTR_EMULATE_PREPARES => false,
22
+ ]); // $dsn, $username, $passwordは適切に設定済として。
23
+ $sql = <<<EOT
18
24
  UPDATE `target_table`
19
- SET `target_column1` = 'ABC'
25
+ SET `name` = :name, `tel` = :tel, `address` = :address
20
- WHERE `id` = 1;
26
+ WHERE `id` = :id;
27
+ EOT;
28
+ $stmt = $pdo->prepare($sql);
29
+ // ここでCSVファイルオープンして、while()ループがはじまるとか
30
+ // while()ループの内側でファイルから一行読み込んで、項目ごとにバラしたとして
31
+ $stmt->bindValue(':name', $csv_name, PDO::PARAM_STR);
32
+ $stmt->bindValue(':tel', $csv_tel, PDO::PARAM_STR);
33
+ $stmt->bindValue(':address', $csv_address, PDO::PARAM_STR);
34
+ $stmt->bindValue(':id', $csv_id, PDO::PARAM_INT);
35
+ $stmt->execute();
36
+ // while()ループ閉じ
37
+ // csvファイルクローズ
38
+ $pdo->commit(); // これを忘れるとデータベースに反映されない
39
+ } catch (PDOException $e) {
40
+ $pdo->rollBack();
41
+ throw $e;
42
+ }
43
+
21
44
  ```
22
45
  みたいになります。
23
46
 
24
47
  phpmyadminで出来ることしかしないのではなく、
25
48
  せっかくデータベースを操作するのにSQL文を使えたほうが
26
- 応用が効きますので是非お試しいただければ。
49
+ 応用が効きますので是非お試しいただければ。
50
+
51
+ (ちなみに、専門はPostgreSQLなので、本職のmysql-erさんに怒られるかなとヒヤヒヤしております。あくまで机上デバッグで実行してないので。)

2

加筆修正

2018/10/11 07:51

投稿

退会済みユーザー
answer CHANGED
@@ -1,4 +1,26 @@
1
1
  CSVデータを加工してSQL文を作成すればいいじゃない。
2
2
  CSVに対象テーブルでのユニークキーになる情報もあるでしょうから、
3
3
  CSVを読み込みつつ、当該カラムを取り出し、
4
- UPDATE文に当てはめてクエリー実行する。
4
+ UPDATE文に当てはめてクエリー実行する。
5
+
6
+ [13.2.11 UPDATE 構文](https://dev.mysql.com/doc/refman/5.6/ja/update.html)
7
+
8
+ ```
9
+ UPDATE (テーブル名)
10
+ SET (更新対象のカラム名) = (更新したいテキストや数字)
11
+ WHERE (ユニークキーになるカラム名) = (ユニークキーの値);
12
+ ```
13
+
14
+ みたいな文法になります。
15
+ 値として文字列を与えるときはシングルクォートで囲み
16
+ mysqlではテーブル名やカラム名をバッククォートで囲み
17
+ ```
18
+ UPDATE `target_table`
19
+ SET `target_column1` = 'ABC'
20
+ WHERE `id` = 1;
21
+ ```
22
+ みたいになります。
23
+
24
+ phpmyadminで出来ることしかしないのではなく、
25
+ せっかくデータベースを操作するのにSQL文を使えたほうが
26
+ 応用が効きますので是非お試しいただければ。

1

加筆修正

2018/10/11 05:05

投稿

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