回答編集履歴

5

見直し

2018/04/16 10:18

投稿

退会済みユーザー
test CHANGED
@@ -8,15 +8,45 @@
8
8
 
9
9
  try{
10
10
 
11
- $d = new PDO("mysql:host=localhost;dbname=db;charset=utf8mb4","root","1234",[
11
+ $d = new PDO("mysql:host=localhost;dbname=db;charset=utf8mb4","root","1234",[
12
12
 
13
- PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
13
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
14
14
 
15
- PDO::ATTR_EMULATE_PREPARES => false,
15
+ PDO::ATTR_EMULATE_PREPARES => false,
16
16
 
17
- ]);
17
+ ]);
18
18
 
19
19
  print "接続成功<br>";
20
+
21
+ $d->beginTransaction(); // トランザクション開始
22
+
23
+
24
+
25
+ $s = $d->prepare("INSERT INTO form1 (`namae`,`nen`,`sex`,`jusyo`,`tel`,`mail`,`index`,`toi`) values (:namae,:nen,:sex,:jusyo,:tel,:mail,:index,:toi)"); // SQLインジェクション対策にはprepare
26
+
27
+ $s->bindValue(':namae', $namae, PDO::PARAM_STR);
28
+
29
+ $s->bindValue(':nen', $nen, PDO::PARAM_STR);
30
+
31
+ $s->bindValue(':sex', $sex, PDO::PARAM_STR);
32
+
33
+ $s->bindValue(':jusyo', $jusyo, PDO::PARAM_STR);
34
+
35
+ $s->bindValue(':tel', $tel, PDO::PARAM_STR);
36
+
37
+ $s->bindValue(':mail', $mail, PDO::PARAM_STR);
38
+
39
+ $s->bindValue(':index', $index, PDO::PARAM_STR);
40
+
41
+ $s->bindValue(':toi', $toi, PDO::PARAM_STR);
42
+
43
+ $s->execute();
44
+
45
+
46
+
47
+ $d->commit(); // コミットも忘れずに
48
+
49
+
20
50
 
21
51
  } catch (PDOException $e) {
22
52
 
@@ -25,30 +55,6 @@
25
55
  }
26
56
 
27
57
 
28
-
29
- $s = $d->prepare("INSERT INTO form1 (`namae`,`nen`,`sex`,`jusyo`,`tel`,`mail`,`index`,`toi`) values (:namae,:nen,:sex,:jusyo,:tel,:mail,:index,:toi)"); // SQLインジェクション対策にはprepare
30
-
31
- $s->bindValue(':namae', $namae, PDO::PARAM_STR);
32
-
33
- $s->bindValue(':nen', $nen, PDO::PARAM_STR);
34
-
35
- $s->bindValue(':sex', $sex, PDO::PARAM_STR);
36
-
37
- $s->bindValue(':jusyo', $jusyo, PDO::PARAM_STR);
38
-
39
- $s->bindValue(':tel', $tel, PDO::PARAM_STR);
40
-
41
- $s->bindValue(':mail', $mail, PDO::PARAM_STR);
42
-
43
- $s->bindValue(':index', $index, PDO::PARAM_STR);
44
-
45
- $s->bindValue(':toi', $toi, PDO::PARAM_STR);
46
-
47
- $s->execute();
48
-
49
-
50
-
51
- $d->commit(); // コミットも忘れずに
52
58
 
53
59
  ```
54
60
 

4

加筆修正

2018/04/16 10:18

投稿

退会済みユーザー
test CHANGED
@@ -1,3 +1,7 @@
1
+ prepare()→bindValue()→execute()の繰り返しをして、
2
+
3
+ 最後にcommit()しよう。
4
+
1
5
  [PHP: PDOStatement::bindValue - Manual](http://php.net/manual/ja/pdostatement.bindvalue.php)
2
6
 
3
7
  ```php

3

加筆修正

2018/04/16 10:13

投稿

退会済みユーザー
test CHANGED
@@ -4,7 +4,13 @@
4
4
 
5
5
  try{
6
6
 
7
- $d = new PDO("mysql:host=localhost;dbname=db","root","1234");
7
+ $d = new PDO("mysql:host=localhost;dbname=db;charset=utf8mb4","root","1234",[
8
+
9
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
10
+
11
+ PDO::ATTR_EMULATE_PREPARES => false,
12
+
13
+ ]);
8
14
 
9
15
  print "接続成功<br>";
10
16
 
@@ -46,6 +52,8 @@
46
52
 
47
53
  みたいな書き方になるかと。
48
54
 
55
+ 接続時に例外をスローするようにしたのと、utf8接続指定したのと。
56
+
49
57
  カラム名をバッククォートで囲むと、予約語とかぶっても安心。
50
58
 
51
59
  もしも数値型のカラムの場合は、PDO::PARAM_STRじゃなくPDO::PARAM_INTを使います。

2

加筆修正

2018/04/16 10:09

投稿

退会済みユーザー
test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
 
18
18
 
19
- $s = $d->prepare("INSERT INTO form1 (`namae`,`nen`,`sex`,`jusyo`,`tel`,`mail`,`index`,`toi`) values (:namae,:nen,:sex,:jusyo,:tel,:mail,:index,:toi)");
19
+ $s = $d->prepare("INSERT INTO form1 (`namae`,`nen`,`sex`,`jusyo`,`tel`,`mail`,`index`,`toi`) values (:namae,:nen,:sex,:jusyo,:tel,:mail,:index,:toi)"); // SQLインジェクション対策にはprepare
20
20
 
21
21
  $s->bindValue(':namae', $namae, PDO::PARAM_STR);
22
22
 
@@ -36,6 +36,10 @@
36
36
 
37
37
  $s->execute();
38
38
 
39
+
40
+
41
+ $d->commit(); // コミットも忘れずに
42
+
39
43
  ```
40
44
 
41
45
 

1

加筆修正

2018/04/16 10:04

投稿

退会済みユーザー
test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
 
18
18
 
19
- $s = $d->prepare("INSERT INTO form1 (namae,nen,sex,jusyo,tel,mail,index,toi) values (:namae,:nen,:sex,:jusyo,:tel,:mail,:index,:toi)");
19
+ $s = $d->prepare("INSERT INTO form1 (`namae`,`nen`,`sex`,`jusyo`,`tel`,`mail`,`index`,`toi`) values (:namae,:nen,:sex,:jusyo,:tel,:mail,:index,:toi)");
20
20
 
21
21
  $s->bindValue(':namae', $namae, PDO::PARAM_STR);
22
22
 
@@ -42,4 +42,6 @@
42
42
 
43
43
  みたいな書き方になるかと。
44
44
 
45
+ カラム名をバッククォートで囲むと、予約語とかぶっても安心。
46
+
45
47
  もしも数値型のカラムの場合は、PDO::PARAM_STRじゃなくPDO::PARAM_INTを使います。