質問編集履歴

3

修正

2018/09/02 04:46

投稿

DaisukeKusakari
DaisukeKusakari

スコア16

title CHANGED
File without changes
body CHANGED
@@ -2,24 +2,6 @@
2
2
 
3
3
  $idと$active_datetime_strがすでに存在していればUPDATE、存在していなければINSERTしたいです。下記コードを実行しても、常にINSERTしてしまいます。ご教示いただけますようよろしくお願いいたします。
4
4
 
5
- ```mysql
6
- for ($i=0; $i < $cnt; $i++){
7
- $sql = <<<SQL
8
- INSERT INTO `schedule` (`id`, `datetime`,`schedule`)
9
- VALUES ('{$id}', '{$active_datetime_str[$i]}', '{$set_schedule[$i]}')
10
- ON DUPLICATE KEY UPDATE `id` = VALUES(`id`), `datetime` = VALUES(`datetime`)
11
- SQL;
12
- // PDO::PARAM_STR-->プリペアドステートメント
13
- $stmt = $dbh->prepare($sql);
14
- // // SQLに変数を代入
15
- // $stmt->bindValue(':id', $id, PDO::PARAM_STR);
16
- if(!$stmt->execute()){
17
- return FALSE;
18
- }
19
- }
20
- return TRUE;
21
- }
22
- ```
23
5
  ```sql
24
6
  CREATE TABLE `schedule` (
25
7
  `id` varchar(20) NOT NULL,

2

修正後

2018/09/02 04:46

投稿

DaisukeKusakari
DaisukeKusakari

スコア16

title CHANGED
File without changes
body CHANGED
@@ -26,4 +26,27 @@
26
26
  `datetime` datetime NOT NULL,
27
27
  `schedule` tinyint(1) NOT NULL
28
28
  )
29
+ ```
30
+ ```php
31
+ function update_schedule($dbh, $id, $set_schedule){
32
+ $active_datetime_str = get_active_datetime_str();
33
+ $cnt = count($active_datetime_str);
34
+ for ($i=0; $i < $cnt; $i++){
35
+ $sql = <<<SQL
36
+ INSERT INTO `schedule`
37
+ VALUES (:id, :active_datetime_str, :set_schedule)
38
+ ON DUPLICATE KEY UPDATE schedule = VALUES(schedule)
39
+ SQL;
40
+ // PDO::PARAM_STR-->プリペアドステートメント
41
+ $stmt = $dbh->prepare($sql);
42
+ // SQLに変数を代入
43
+ $stmt->bindValue(':id', $id, PDO::PARAM_STR);
44
+ $stmt->bindValue(':active_datetime_str', $active_datetime_str[$i], PDO::PARAM_STR);
45
+ $stmt->bindValue(':set_schedule', $set_schedule[$i], PDO::PARAM_STR);
46
+ if(!$stmt->execute()){
47
+ return FALSE;
48
+ }
49
+ }
50
+ return TRUE;
51
+ }
29
52
  ```

1

テーブル構造の追加

2018/09/02 04:44

投稿

DaisukeKusakari
DaisukeKusakari

スコア16

title CHANGED
File without changes
body CHANGED
@@ -19,4 +19,11 @@
19
19
  }
20
20
  return TRUE;
21
21
  }
22
+ ```
23
+ ```sql
24
+ CREATE TABLE `schedule` (
25
+ `id` varchar(20) NOT NULL,
26
+ `datetime` datetime NOT NULL,
27
+ `schedule` tinyint(1) NOT NULL
28
+ )
22
29
  ```