回答編集履歴
4
加筆修正
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
見直し
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
見直し
test
CHANGED
@@ -40,25 +40,35 @@
|
|
40
40
|
|
41
41
|
if (($_POST['message'] != '') && (is_numeric($_POST['reply_post_id']))) {
|
42
42
|
|
43
|
-
|
43
|
+
try {
|
44
44
|
|
45
|
-
|
45
|
+
$db->beginTransaction();
|
46
46
|
|
47
|
-
$message->e
|
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
|
-
$me
|
49
|
+
$message->execute(array(
|
50
50
|
|
51
|
-
$
|
51
|
+
$member['id'],
|
52
52
|
|
53
|
-
$_POST['
|
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
見直し
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
|
```
|