回答編集履歴

4

加筆修正

2019/05/25 05:38

投稿

退会済みユーザー
test CHANGED
@@ -80,6 +80,8 @@
80
80
 
81
81
  本当にほしいPOST受信パラメータを使ってisset()で判定するべきかと。
82
82
 
83
+ [PHP isset, empty, is_null の違い早見表 - Qiita](https://qiita.com/shinichi-takii/items/00aed26f96cf6bb3fe62)
84
+
83
85
 
84
86
 
85
87
  それと、この場面に至るまでに、ちゃんと$memberや$member['id']に値が入ってきているかも確認しないと。

3

見直し

2019/05/25 05:38

投稿

退会済みユーザー
test CHANGED
@@ -121,3 +121,31 @@
121
121
  で閉じていますが、もしもその記号のあとに改行コードとかあると、
122
122
 
123
123
  不要な文字出力が生じて header() によるリダイレクトが利かなかったりするかもしれません。
124
+
125
+
126
+
127
+ ```
128
+
129
+ //dbconnect.php
130
+
131
+ <?php
132
+
133
+ try {
134
+
135
+ $db = new PDO('mysql:dbname=mini_bbs;host=localhost;charset=utf8', 'root', 'root', [
136
+
137
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
138
+
139
+ PDO::ATTR_EMULATE_PREPARES => false,
140
+
141
+ ]);
142
+
143
+ } catch (PDOException $e) {
144
+
145
+ echo 'DB接続エラー:' . $e->getMessage();
146
+
147
+ }
148
+
149
+ ```
150
+
151
+ とかやってデータベース操作時のエラーを例外としてキャッチできるようにするのも忘れずに。

2

見直し

2019/05/25 05:33

投稿

退会済みユーザー
test CHANGED
@@ -40,25 +40,35 @@
40
40
 
41
41
  if (($_POST['message'] != '') && (is_numeric($_POST['reply_post_id']))) {
42
42
 
43
- $db->beginTransaction();
43
+ try {
44
44
 
45
- $message = $db->prepare('INSERT INTO posts(member_id, message, reply_post_id, created) set member_id=?, message=?, reply_post_id=?, created=NOW()');
45
+ $db->beginTransaction();
46
46
 
47
- $message->execute(array(
47
+ $message = $db->prepare('INSERT INTO posts(member_id, message, reply_post_id, created) set member_id=?, message=?, reply_post_id=?, created=NOW()');
48
48
 
49
- $member['id'],
49
+ $message->execute(array(
50
50
 
51
- $_POST['message'],
51
+ $member['id'],
52
52
 
53
- $_POST['reply_post_id']
53
+ $_POST['message'],
54
54
 
55
- ));
55
+ $_POST['reply_post_id']
56
56
 
57
+ ));
58
+
57
- $db->commit();
59
+ $db->commit();
58
60
 
59
61
 
60
62
 
61
- header('Location: index.php'); exit(); // ←これがこれでいいかどうかは保留。
63
+ header('Location: index.php'); exit(); // ←これがこれでいいかどうかは保留。
64
+
65
+ }
66
+
67
+ catch (PDOException e) {
68
+
69
+ echo e->getMessage(); // ←あくまで仮。
70
+
71
+ }
62
72
 
63
73
  }
64
74
 
@@ -96,6 +106,8 @@
96
106
 
97
107
  念のため、beginTransaction()とcommit()も設けてデータベースへの反映を意図してみたり。
98
108
 
109
+ さらに念のために、try~catchで囲ってみたり。
110
+
99
111
 
100
112
 
101
113
  また、dbconnect.phpの末尾で

1

見直し

2019/05/25 05:31

投稿

退会済みユーザー
test CHANGED
@@ -40,6 +40,8 @@
40
40
 
41
41
  if (($_POST['message'] != '') && (is_numeric($_POST['reply_post_id']))) {
42
42
 
43
+ $db->beginTransaction();
44
+
43
45
  $message = $db->prepare('INSERT INTO posts(member_id, message, reply_post_id, created) set member_id=?, message=?, reply_post_id=?, created=NOW()');
44
46
 
45
47
  $message->execute(array(
@@ -51,6 +53,8 @@
51
53
  $_POST['reply_post_id']
52
54
 
53
55
  ));
56
+
57
+ $db->commit();
54
58
 
55
59
 
56
60
 
@@ -90,6 +94,10 @@
90
94
 
91
95
 
92
96
 
97
+ 念のため、beginTransaction()とcommit()も設けてデータベースへの反映を意図してみたり。
98
+
99
+
100
+
93
101
  また、dbconnect.phpの末尾で
94
102
 
95
103
  ```