質問編集履歴

2

文章の内容を一部変更

2019/11/03 14:53

投稿

yk_dev
yk_dev

スコア8

test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,9 @@
18
18
 
19
19
  ### 発生している問題・エラーメッセージ
20
20
 
21
- 編集ページにてPOST送信するとクエリが失敗してしまいます。
21
+ 編集ページにてPOST送信を行い、DB更新をしようとすると
22
+
23
+ クエリが失敗してしまいます。
22
24
 
23
25
  削除機能はまだつけていません。
24
26
 
@@ -172,7 +174,7 @@
172
174
 
173
175
  ### 試したこと
174
176
 
175
- WHERE以降を消すとPOST送信自体はうまくいくので、
177
+ WHERE以降を消すとDBの更新がうまくいくので、
176
178
 
177
179
  p_id(記事ごとのID)、user_idの送信が問題のように見えるのですが、ログを見る限りでは
178
180
 

1

コードのレイアウトを見やすく変更、DB接続で独自関数を消し処理の内容を記載、問題の起きていないコードは削除

2019/11/03 14:53

投稿

yk_dev
yk_dev

スコア8

test CHANGED
File without changes
test CHANGED
@@ -26,15 +26,23 @@
26
26
 
27
27
 
28
28
 
29
- ```
30
29
 
30
+
31
+
32
+
33
+
34
+
31
- エラーメッセージ
35
+ ```ここに言語を入力
32
36
 
33
37
  [03-Nov-2019 06:11:57 UTC] デバッグ:バリデーションOK。
34
38
 
35
39
  [03-Nov-2019 06:11:57 UTC] デバッグ:DB更新。
36
40
 
41
+ [03-Nov-2019 06:11:57 UTC] デバッグ:
42
+
37
- [03-Nov-2019 06:11:57 UTC] デバッグ:SQL:UPDATE infoblog SET name = :name, comment = :comment, pic1 = :pic1, WHERE user_id = :u_id AND id = :p_id
43
+ SQL:UPDATE infoblog SET name = :name, comment = :comment, pic1 = :pic1, WHERE user_id = :u_id
44
+
45
+ AND id = :p_id
38
46
 
39
47
  [03-Nov-2019 06:11:57 UTC] デバッグ:格納データ:Array
40
48
 
@@ -58,59 +66,85 @@
58
66
 
59
67
  [03-Nov-2019 06:11:57 UTC] デバッグ:失敗したSQL:PDOStatement Object
60
68
 
61
- (
62
-
63
- [queryString] => UPDATE infoblog SET name = :name, comment = :comment, pic1 = :pic1, WHERE user_id = :u_id AND id = :p_id
64
-
65
- )
66
-
67
- )
68
69
 
69
70
 
70
71
 
71
72
 
73
+ ( [queryString] => UPDATE infoblog SET name = :name, comment = :comment, pic1 = :pic1, WHERE user_id = :u_id AND id = :p_id )
72
74
 
75
+ ```
76
+
77
+
78
+
73
- ### 該当ソースコード(edit.php)
79
+ ### 編集画面の該当ソースコード
80
+
81
+ ```PHP
82
+
83
+ <?php
84
+
85
+
74
86
 
75
87
  try {
76
88
 
77
- $dbh = dbConnect();
89
+ $dsn = 'mysql:dbname=blog;host=localhost;charset=utf8';
78
90
 
79
- //DB更新
91
+ $user = 'root';
80
92
 
81
- if(!empty ($_GET['p_id'])){
93
+ $password = 'root';
82
94
 
83
- debug('DB更新');
95
+ $options = array(
84
96
 
85
- $sql = 'UPDATE infoblog SET name = :name, comment = :comment, pic1 = :pic1, WHERE user_id = :u_id AND id = :p_id';
97
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT,
86
98
 
99
+ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
100
+
101
+ PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
102
+
103
+ );
104
+
105
+ $dbh = new PDO($dsn, $user, $password, $options);
106
+
107
+ return $dbh;
108
+
109
+ //DB更新
110
+
111
+ if(!empty ($_GET['p_id'])){
112
+
113
+ debug('DB更新');
114
+
115
+ $sql = 'UPDATE infoblog SET name = :name, comment = :comment, pic1 = :pic1, WHERE user_id = :u_id AND id = :p_id';
116
+
87
- $data = array(':name' => $name , ':comment' => $comment, ':pic1' => $pic1, ':u_id' => $_SESSION['user_id'], ':p_id' => $p_id);
117
+ $data = array(':name' => $name , ':comment' => $comment, ':pic1' => $pic1, ':u_id' => $_SESSION['user_id'], ':p_id' => $p_id);
88
118
 
89
119
  }
90
120
 
91
121
 
92
122
 
93
- debug('SQL:'.$sql);
123
+ debug('SQL:'.$sql);
94
124
 
95
- debug('格納データ:'.print_r($data,true));
125
+ debug('格納データ:'.print_r($data,true));
96
126
 
97
127
 
98
128
 
99
- $stmt = queryPost($dbh, $sql, $data);
129
+ $stmt = $dbh->prepare($sql);
130
+
131
+ $stmt->execute($data);
132
+
133
+ return $stmt;
100
134
 
101
135
 
102
136
 
103
- if($stmt){
137
+ if($stmt){
104
138
 
105
- $_SESSION['msg_success'] = SUC04;
139
+ $_SESSION['msg_success'] = SUC04;
106
140
 
107
- debug('投稿ページへ戻ります。');
141
+ debug('投稿ページへ戻ります。');
108
142
 
109
- unset($p_id);
143
+ unset($p_id);
110
144
 
111
- header("Location:admin_infoblog.php");
145
+ header("Location:admin_infoblog.php");
112
146
 
113
- }
147
+ }
114
148
 
115
149
 
116
150
 
@@ -126,231 +160,9 @@
126
160
 
127
161
  }
128
162
 
163
+ ```
129
164
 
130
165
 
131
- ### 新規投稿画面のソースコード
132
-
133
- index.php
134
-
135
-
136
-
137
- <?php
138
-
139
- $siteTitle = 'お知らせを投稿';
140
-
141
- require('adminhead.php');
142
-
143
- ?>
144
-
145
-
146
-
147
- <body>
148
-
149
-
150
-
151
- <!-- メニュー -->
152
-
153
- <?php
154
-
155
- require('adminheader.php');
156
-
157
- ?>
158
-
159
-
160
-
161
- <!-- メインコンテンツ -->
162
-
163
- <div id="contents" class="site-width">
164
-
165
- <h1 class="page-title">お知らせを投稿</h1>
166
-
167
- <h3>下にスクロールすると今までの投稿を確認できます。</h3>
168
-
169
- <!-- Main -->
170
-
171
- <section id="main">
172
-
173
- <div class="form-container">
174
-
175
- <form action="" method="post" class="form" enctype="multipart/form-data" style="width:100%;box-sizing:border-box;">
176
-
177
- <div class="area-msg">
178
-
179
- <?php
180
-
181
- if(!empty($err_msg['common'])) echo $err_msg['common'];
182
-
183
- ?>
184
-
185
- </div>
186
-
187
- <label class="<?php if(!empty($err_msg['name'])) echo 'err'; ?>">
188
-
189
- タイトル<span class="label-require">必須</span>
190
-
191
- <input type="text" name="name" value="<?php echo getFormData('name'); ?>">
192
-
193
- </label>
194
-
195
- <div class="area-msg">
196
-
197
- <?php
198
-
199
- if(!empty($err_msg['name'])) echo $err_msg['name'];
200
-
201
- ?>
202
-
203
- </div>
204
-
205
- <label class="<?php if(!empty($err_msg['comment'])) echo 'err'; ?>">
206
-
207
- お知らせ内容
208
-
209
- <textarea name="comment" id="js-count" cols="30" rows="10" style="height:150px;"><?php echo getFormData('comment'); ?></textarea>
210
-
211
- </label>
212
-
213
- <p class="counter-text"><span id="js-count-view">0</span>/500文字</p>
214
-
215
- <div class="area-msg">
216
-
217
- <?php
218
-
219
- if(!empty($err_msg['comment'])) echo $err_msg['comment'];
220
-
221
- ?>
222
-
223
- </div>
224
-
225
- <div style="overflow:hidden;">
226
-
227
- <div class="imgDrop-container">
228
-
229
- 画像を投稿する
230
-
231
- <label class="area-drop <?php if(!empty($err_msg['pic1'])) echo 'err'; ?>">
232
-
233
- <input type="hidden" name="MAX_FILE_SIZE" value="3145728">
234
-
235
- <input type="file" name="pic1" class="input-file">
236
-
237
- <img src="<?php echo getFormData('pic1'); ?>" alt="" class="prev-img" style="<?php if(empty(getFormData('pic1'))) echo 'display:none;' ?>">
238
-
239
- ドラッグ&ドロップ
240
-
241
- </label>
242
-
243
- <div class="area-msg">
244
-
245
- <?php
246
-
247
- if(!empty($err_msg['pic1'])) echo $err_msg['pic1'];
248
-
249
- ?>
250
-
251
- </div>
252
-
253
- </div>
254
-
255
- </div>
256
-
257
- <div class="btn-container">
258
-
259
- <input type="submit" class="btn btn-mid" value="投稿する">
260
-
261
- </div>
262
-
263
- </form>
264
-
265
- </div>
266
-
267
-
268
-
269
-
270
-
271
- **<!--記事一覧部分-->
272
-
273
- <div class="postlist">
274
-
275
- <?php foreach($dbPostData['data'] as $key => $val):?>
276
-
277
- <a href="edit.php<?php echo (!empty(appendGetParam())) ? appendGetParam().'&p_id='.$val['id'] : '?p_id='.$val['id']; ?>" class="panel">
278
-
279
- <div class="panel-title">
280
-
281
- <table>
282
-
283
- <tr>
284
-
285
- <th>
286
-
287
- <h1 class="infotitle"><?php echo sanitize($val['name']); ?></h1>
288
-
289
- </th>
290
-
291
- <th><?php echo sanitize($val['create_date']); ?></th>
292
-
293
- </tr>
294
-
295
- <tr>
296
-
297
- <td>
298
-
299
- <p class="infobody"><?php echo sanitize($val['comment']); ?></p>
300
-
301
- </td>
302
-
303
- </tr>
304
-
305
- </table>
306
-
307
- </div>
308
-
309
- <div class="posthead">
310
-
311
- <a href="<?php echo sanitize($val['pic1']); ?>" target="_blank" rel="noopener noreferrer"><img class="infoimg" src="<?php echo sanitize($val['pic1']); ?>" width="<?php echo $img_size_width; ?>" height="<?php echo $img_size_height; ?> " onerror="this.style.display='none'"></a>
312
-
313
- </div>
314
-
315
- <hr />
316
-
317
-             <?php endforeach; ?>**
318
-
319
- </div>
320
-
321
-
322
-
323
- </section>
324
-
325
-
326
-
327
- <!-- footer -->
328
-
329
- <?php
330
-
331
- require('uploadphoto.php');
332
-
333
- ?>
334
-
335
-
336
-
337
-
338
-
339
- # 編集画面のソースコード
340
-
341
-
342
-
343
- $p_id = (!empty($_GET['p_id'])) ? $_GET['p_id'] : '';
344
-
345
- $dbFormData = (!empty($p_id)) ? getInfo($_SESSION['user_id'], $p_id) : '';
346
-
347
-
348
-
349
- ファイル頭にこれが追記されたのみで
350
-
351
- これ以外はDB接続のコードが「該当のソースコード」に書いたものになってるのみで、
352
-
353
- 投稿画面とほぼ共通のソースコードになります。
354
166
 
355
167
 
356
168