質問編集履歴

3

修正

2018/09/02 04:46

投稿

DaisukeKusakari
DaisukeKusakari

スコア16

test CHANGED
File without changes
test CHANGED
@@ -5,42 +5,6 @@
5
5
  $idと$active_datetime_strがすでに存在していればUPDATE、存在していなければINSERTしたいです。下記コードを実行しても、常にINSERTしてしまいます。ご教示いただけますようよろしくお願いいたします。
6
6
 
7
7
 
8
-
9
- ```mysql
10
-
11
- for ($i=0; $i < $cnt; $i++){
12
-
13
- $sql = <<<SQL
14
-
15
- INSERT INTO `schedule` (`id`, `datetime`,`schedule`)
16
-
17
- VALUES ('{$id}', '{$active_datetime_str[$i]}', '{$set_schedule[$i]}')
18
-
19
- ON DUPLICATE KEY UPDATE `id` = VALUES(`id`), `datetime` = VALUES(`datetime`)
20
-
21
- SQL;
22
-
23
- // PDO::PARAM_STR-->プリペアドステートメント
24
-
25
- $stmt = $dbh->prepare($sql);
26
-
27
- // // SQLに変数を代入
28
-
29
- // $stmt->bindValue(':id', $id, PDO::PARAM_STR);
30
-
31
- if(!$stmt->execute()){
32
-
33
- return FALSE;
34
-
35
- }
36
-
37
- }
38
-
39
- return TRUE;
40
-
41
- }
42
-
43
- ```
44
8
 
45
9
  ```sql
46
10
 

2

修正後

2018/09/02 04:46

投稿

DaisukeKusakari
DaisukeKusakari

スコア16

test CHANGED
File without changes
test CHANGED
@@ -55,3 +55,49 @@
55
55
  )
56
56
 
57
57
  ```
58
+
59
+ ```php
60
+
61
+ function update_schedule($dbh, $id, $set_schedule){
62
+
63
+ $active_datetime_str = get_active_datetime_str();
64
+
65
+ $cnt = count($active_datetime_str);
66
+
67
+ for ($i=0; $i < $cnt; $i++){
68
+
69
+ $sql = <<<SQL
70
+
71
+ INSERT INTO `schedule`
72
+
73
+ VALUES (:id, :active_datetime_str, :set_schedule)
74
+
75
+ ON DUPLICATE KEY UPDATE schedule = VALUES(schedule)
76
+
77
+ SQL;
78
+
79
+ // PDO::PARAM_STR-->プリペアドステートメント
80
+
81
+ $stmt = $dbh->prepare($sql);
82
+
83
+ // SQLに変数を代入
84
+
85
+ $stmt->bindValue(':id', $id, PDO::PARAM_STR);
86
+
87
+ $stmt->bindValue(':active_datetime_str', $active_datetime_str[$i], PDO::PARAM_STR);
88
+
89
+ $stmt->bindValue(':set_schedule', $set_schedule[$i], PDO::PARAM_STR);
90
+
91
+ if(!$stmt->execute()){
92
+
93
+ return FALSE;
94
+
95
+ }
96
+
97
+ }
98
+
99
+ return TRUE;
100
+
101
+ }
102
+
103
+ ```

1

テーブル構造の追加

2018/09/02 04:44

投稿

DaisukeKusakari
DaisukeKusakari

スコア16

test CHANGED
File without changes
test CHANGED
@@ -41,3 +41,17 @@
41
41
  }
42
42
 
43
43
  ```
44
+
45
+ ```sql
46
+
47
+ CREATE TABLE `schedule` (
48
+
49
+ `id` varchar(20) NOT NULL,
50
+
51
+ `datetime` datetime NOT NULL,
52
+
53
+ `schedule` tinyint(1) NOT NULL
54
+
55
+ )
56
+
57
+ ```