teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

8

実装部分の追加

2018/08/28 02:48

投稿

ryuuutyenn
ryuuutyenn

スコア9

title CHANGED
File without changes
body CHANGED
@@ -34,6 +34,12 @@
34
34
  実装はPHPで行っています。
35
35
 
36
36
  ```php
37
+ $data = $_POST["Data"];
38
+ if (isset($data["プロジェクト_id" ])) { $projectID = $data["プロジェクト_id"];}
39
+ if (isset($data["プロジェクト名" ])) { $projectName = $data["プロジェクト名"];}
40
+ if (isset($data["プレフィックス" ])) { $prefix = $data["プレフィックス"];}
41
+ if (isset($data["説明"])) { $description = $data["説明"];}
42
+
37
43
  try {
38
44
  $stmt = $db->prepare("
39
45
  UPDATE プロジェクト SET
@@ -54,4 +60,20 @@
54
60
  $result["Result"]= false;
55
61
  $result["Reason"] = $e->getMessage();
56
62
  }
63
+ ```
64
+
65
+ DBには以下のレコードがあります。
66
+
67
+ |プロジェクト_id|プロジェクト名|プレフィックス|説明|
68
+ |:--:|:--:|:--:|:--:|
69
+ |︙|︙|︙|︙|
70
+ |18|テスト|test|テストプロジェクト|
71
+
72
+ クライアント側ではDBから取得した値を表示していますので、
73
+ 値に変更がない場合でもData配列を送り、SQL文を組み立てています。
74
+
75
+ このレコードに対して上記のPHPを実行したところ以下のエラーが帰ってきました。
76
+
77
+ ```
78
+ SQLSTATE[23000]: Integrity constraint violation: 19 column プレフィックス is not unique
57
79
  ```

7

実装部分の追加

2018/08/28 02:47

投稿

ryuuutyenn
ryuuutyenn

スコア9

title CHANGED
File without changes
body CHANGED
@@ -17,9 +17,9 @@
17
17
  ```SQL
18
18
 
19
19
  CREATE TABLE `project` (
20
- `projectId` INTEGER PRIMARY KEY AUTOINCREMENT,
20
+ `プロジェクト_id` INTEGER PRIMARY KEY AUTOINCREMENT,
21
- `projectName` VARCHAR ( 20 ) NOT NULL DEFAULT 'no project name' UNIQUE
21
+ `プロジェクト名` VARCHAR ( 20 ) NOT NULL DEFAULT 'no project name' UNIQUE
22
- `prefix` VARCHAR ( 10 ) NOT NULL DEFAULT 'WP' UNIQUE,
22
+ `プレフィックス` VARCHAR ( 10 ) NOT NULL DEFAULT 'WP' UNIQUE,
23
23
  `count` INTEGER NOT NULL DEFAULT 0,
24
24
  );
25
25
 
@@ -29,4 +29,29 @@
29
29
  ```
30
30
 
31
31
  ただ、もう一度DB browsere for Sqlite のDBツールで試した結果
32
- エラーにはなりませんでした。
32
+ エラーにはなりませんでした。
33
+
34
+ 実装はPHPで行っています。
35
+
36
+ ```php
37
+ try {
38
+ $stmt = $db->prepare("
39
+ UPDATE プロジェクト SET
40
+ プロジェクト名=:projectName, プレフィックス=:prefix, 説明=:description
41
+ WHERE プロジェクト_id=:projectID
42
+ ;");
43
+
44
+ $stmt->bindParam(":projectName", $projectName);
45
+ $stmt->bindParam(":prefix", $prefix);
46
+ $stmt->bindParam(":description", $description);
47
+ $stmt->bindParam(":projectID", $projectID);
48
+
49
+ $stmt->execute();
50
+
51
+ $result["Result"]= true;
52
+
53
+ } catch (PDOException $e) {
54
+ $result["Result"]= false;
55
+ $result["Reason"] = $e->getMessage();
56
+ }
57
+ ```

6

SQL文を追加

2018/08/28 01:33

投稿

ryuuutyenn
ryuuutyenn

スコア9

title CHANGED
File without changes
body CHANGED
@@ -23,7 +23,7 @@
23
23
  `count` INTEGER NOT NULL DEFAULT 0,
24
24
  );
25
25
 
26
- INSERT INTO project(projectName = 'WP');
26
+ INSERT INTO project(projectName) VALUES('WP');
27
27
 
28
28
  UPDATE project SET projectName='WP' WHERE projectId id=22;
29
29
  ```

5

SQL文を追加

2018/08/27 06:07

投稿

ryuuutyenn
ryuuutyenn

スコア9

title CHANGED
File without changes
body CHANGED
@@ -23,7 +23,9 @@
23
23
  `count` INTEGER NOT NULL DEFAULT 0,
24
24
  );
25
25
 
26
+ INSERT INTO project(projectName = 'WP');
27
+
26
- UPDATE project SET projectName='WP' WHERE projectId id=22
28
+ UPDATE project SET projectName='WP' WHERE projectId id=22;
27
29
  ```
28
30
 
29
31
  ただ、もう一度DB browsere for Sqlite のDBツールで試した結果

4

SQL文の追加

2018/08/27 06:06

投稿

ryuuutyenn
ryuuutyenn

スコア9

title CHANGED
File without changes
body CHANGED
@@ -16,6 +16,13 @@
16
16
 
17
17
  ```SQL
18
18
 
19
+ CREATE TABLE `project` (
20
+ `projectId` INTEGER PRIMARY KEY AUTOINCREMENT,
21
+ `projectName` VARCHAR ( 20 ) NOT NULL DEFAULT 'no project name' UNIQUE
22
+ `prefix` VARCHAR ( 10 ) NOT NULL DEFAULT 'WP' UNIQUE,
23
+ `count` INTEGER NOT NULL DEFAULT 0,
24
+ );
25
+
19
26
  UPDATE project SET projectName='WP' WHERE projectId id=22
20
27
  ```
21
28
 

3

SQL文を追加

2018/08/27 05:59

投稿

ryuuutyenn
ryuuutyenn

スコア9

title CHANGED
File without changes
body CHANGED
@@ -10,4 +10,14 @@
10
10
  現在の対応としては、すでにクライアント側でもし値が同じならUPDATEのリクエストを送らないようにして、解決しましたが、
11
11
  上記のようなことができるか気になり質問しました。
12
12
 
13
- よろしくお願いします。
13
+ よろしくお願いします。
14
+
15
+ 以下のSQLite文を実行しています。
16
+
17
+ ```SQL
18
+
19
+ UPDATE project SET projectName='WP' WHERE projectId id=22
20
+ ```
21
+
22
+ ただ、もう一度DB browsere for Sqlite のDBツールで試した結果
23
+ エラーにはなりませんでした。

2

タグの追加

2018/08/27 05:30

投稿

ryuuutyenn
ryuuutyenn

スコア9

title CHANGED
File without changes
body CHANGED
File without changes

1

書式の改善

2018/08/27 04:44

投稿

ryuuutyenn
ryuuutyenn

スコア9

title CHANGED
File without changes
body CHANGED
@@ -4,7 +4,7 @@
4
4
  同じ値の場合は、更新する前にバリデーションを行った結果、エラーが起きているのだと推測しています。
5
5
 
6
6
  以下のページのように、自分自身はバリデーション対象から外すことはSQLITEではできないのでしょうか?
7
- https://qiita.com/qwe001/items/997016be3ca4c7bde47e
7
+ [Laravel5のバリデーションの重複チェックで自分自身は除外する方法](https://qiita.com/qwe001/items/997016be3ca4c7bde47e)
8
8
 
9
9
 
10
10
  現在の対応としては、すでにクライアント側でもし値が同じならUPDATEのリクエストを送らないようにして、解決しましたが、