質問編集履歴

3

$_POSTの使い方と、$dbhオブジェクトに連番を振らないように変更しました。

2020/12/13 21:46

投稿

lnavi.bex810vh
lnavi.bex810vh

スコア12

test CHANGED
File without changes
test CHANGED
@@ -1,10 +1,8 @@
1
- xampp3.2.4、php7.4.11環境。$_POST配列使い方に質問です。勘違いてい修正してす。
2
-
3
- 具体的には値をPOSTた際に、遷移後の画面に$_POSTに値がある場合とそうでな場合を、正しく判定する方法がわかりません。null空文字についてよくわかっていためだ思い、いろいろ調べておりま
4
-
5
- > array(3) { ["pref"]=> string(9) "秋田県" ["main_pic"]=> string(54) "fbpsjgbr5okn0fa10dr54njukgpr7dgmrbwn6ryylwl2irjdap.JPG" ["appeal"]=> string(15) "あいうえお" } 不正な操作です0
6
-
7
- SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '47' for key 'mem_id'都道府県名が入力されていません。
1
+ 自己解決しました。自己解決方法を投稿したのですが、404NOT FOUNDになってしまい投稿できていなかったようです。解決方法としましては、$dbhのデータベースオブジェクトの変数名ま連番を振ってしまっていたことが原因でした。$_POSTの判定法としては、最初isset関数を使変数定義をチェックした後に、空文字かどうかを判定するだけでいけるようです。
2
+
3
+ 大変おさわがせまし申し訳ございません。修正済みコードを掲載しておきます。sanitizeが何をやっているかとと、htmlspecialcharsを実行して返してるだけで
4
+
5
+ >array(3) { ["pref"]=> string(9) "千葉県" ["main_pic"]=> string(54) "62cu6sfozmznp0u6vs5kbaaefjbvid5s6bwk6cnh9bbczeehdy.JPG" ["pic1"]=> string(54) "g5a55yhh8uglma6io4x7zymaoetbl3y6ip2kt3jno8mtf48cfd.JPG" }
8
6
 
9
7
 
10
8
 
@@ -204,7 +202,7 @@
204
202
 
205
203
  ~省略(画像生成処理)~
206
204
 
207
- ~省略(画像生成処理)~
205
+
208
206
 
209
207
  if($appeal){
210
208
 
@@ -318,11 +316,17 @@
318
316
 
319
317
 
320
318
 
319
+ if (isset($_POST['pref'])) {
320
+
321
+ if ($_POST['pref'] != "") {
322
+
323
+
324
+
321
325
  $sql1='INSERT INTO mst_pref (mem_id,pref) VALUES (?,?)';
322
326
 
323
327
 
324
328
 
325
- $stmh1=$dbh1->prepare($sql1);
329
+ $stmh1=$dbh->prepare($sql1);
326
330
 
327
331
  $stmh1 -> bindValue(1, $id, PDO::PARAM_INT);
328
332
 
@@ -332,13 +336,25 @@
332
336
 
333
337
  $stmh1->execute();
334
338
 
339
+ $dbh1=null;
340
+
341
+ }
342
+
343
+ }
344
+
345
+
346
+
347
+ if (isset($_POST['appeal'])) {
348
+
349
+ if ($_POST['appeal'] != "") {
350
+
335
351
 
336
352
 
337
353
  $sql2='INSERT INTO mst_appeal (mem_id,appeal) VALUES (?,?)';
338
354
 
339
355
 
340
356
 
341
- $stmh2=$dbh2->prepare($sql2);
357
+ $stmh2=$dbh->prepare($sql2);
342
358
 
343
359
  $stmh2 -> bindValue(1, $id, PDO::PARAM_INT);
344
360
 
@@ -350,11 +366,21 @@
350
366
 
351
367
 
352
368
 
369
+ }
370
+
371
+ }
372
+
373
+
374
+
375
+ if (isset($_POST['main_pic'])) {
376
+
377
+ if ($_POST['main_pic'] != "") {
378
+
353
379
  $sql3='INSERT INTO mst_img (mem_id,image,img_flg) VALUES (?,?,?)';
354
380
 
355
381
 
356
382
 
357
- $stmh3=$dbh3->prepare($sql3);
383
+ $stmh3=$dbh->prepare($sql3);
358
384
 
359
385
  $stmh3 -> bindValue(1, $id, PDO::PARAM_INT);
360
386
 
@@ -368,11 +394,21 @@
368
394
 
369
395
 
370
396
 
397
+ }
398
+
399
+ }
400
+
401
+
402
+
403
+ if (isset($_POST['pic1'])) {
404
+
405
+ if ($_POST['pic1'] != "") {
406
+
371
407
  $sql4='INSERT INTO mst_img (mem_id,image) VALUES (?,?)';
372
408
 
373
409
 
374
410
 
375
- $stmh4=$dbh4->prepare($sql4);
411
+ $stmh4=$dbh->prepare($sql4);
376
412
 
377
413
  $stmh4 -> bindValue(1, $id, PDO::PARAM_INT);
378
414
 
@@ -382,11 +418,21 @@
382
418
 
383
419
 
384
420
 
421
+ }
422
+
423
+ }
424
+
425
+
426
+
427
+ if (isset($_POST['pic2'])) {
428
+
429
+ if ($_POST['pic2'] != "") {
430
+
385
431
  $sql5='INSERT INTO mst_img (mem_id,image) VALUES (?,?)';
386
432
 
387
433
 
388
434
 
389
- $stmh5=$dbh5->prepare($sql5);
435
+ $stmh5=$dbh->prepare($sql5);
390
436
 
391
437
  $stmh5 -> bindValue(1, $id, PDO::PARAM_INT);
392
438
 
@@ -398,11 +444,21 @@
398
444
 
399
445
 
400
446
 
447
+ }
448
+
449
+ }
450
+
451
+
452
+
453
+ if (isset($_POST['pic3'])) {
454
+
455
+ if ($_POST['pic3'] != "") {
456
+
401
457
  $sql6='INSERT INTO mst_img (mem_id,image) VALUES (?,?)';
402
458
 
403
459
 
404
460
 
405
- $stmh6=$dbh6->prepare($sql6);
461
+ $stmh6=$dbh->prepare($sql6);
406
462
 
407
463
  $stmh6 -> bindValue(1, $id, PDO::PARAM_INT);
408
464
 
@@ -414,7 +470,9 @@
414
470
 
415
471
  $dbh=null;
416
472
 
417
-
473
+ }
474
+
475
+ }
418
476
 
419
477
  ?>
420
478
 

2

事態の進捗、issetなどを使用してみた

2020/12/13 21:46

投稿

lnavi.bex810vh
lnavi.bex810vh

スコア12

test CHANGED
@@ -1 +1 @@
1
- $_POST変数から値取得できな
1
+ $_POST変数からの正しい取得方法につ
test CHANGED
File without changes

1

プレースホルダの部分をbindValueを使うように変更してみました。

2020/12/13 13:14

投稿

lnavi.bex810vh
lnavi.bex810vh

スコア12

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,10 @@
1
- xampp3.2.4、php7.4.11の環境です。$_POST配列の使い方についての質問です。具体的には$_POSTをvar_dump();した際に、POSTしたはずパラメータが取得きないという事象です。何かミスをしているんだと思いますが、自分ではまだ見つけられず、質問させていただきますどうぞよろしくお願い申し上げます。エラーの内容は以下のものになります。
1
+ xampp3.2.4、php7.4.11の環境です。$_POST配列の使い方についての質問です。勘違いていたので修正しています。
2
+
2
-
3
+ 具体的には値をPOSTした際に、遷移後の画面にて$_POSTに値がある場合とそうでない場合を、正しく判定する方法がわかりません。(nullや空文字についてよくわかっていないためだと思い、いろいろ調べております)
4
+
3
- > array(3) { ["pref"]=> string(9) "秋田県" ["main_pic"]=> string(54) "fbpsjgbr5okn0fa10dr54njukgpr7dgmrbwn6ryylwl2irjdap.JPG" ["appeal"]=> string(13) "11111" } 不正な操作です1
5
+ > array(3) { ["pref"]=> string(9) "秋田県" ["main_pic"]=> string(54) "fbpsjgbr5okn0fa10dr54njukgpr7dgmrbwn6ryylwl2irjdap.JPG" ["appeal"]=> string(15) "あいうえお" } 不正な操作です0
4
-
6
+
5
- SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokensアピール文入されていません。
7
+ SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '47' for key 'mem_id'都道府県名が入されていません。
6
8
 
7
9
 
8
10
 
@@ -316,289 +318,97 @@
316
318
 
317
319
 
318
320
 
319
- //都道府県名
320
-
321
- if(isset($_POST['pref']))
322
-
323
- {
324
-
325
-
326
-
327
-
328
-
329
- try
330
-
331
- {
332
-
333
-
334
-
335
- $sql='INSERT INTO mst_pref (mem_id,pref) VALUES (?,?)';
336
-
337
-
338
-
339
- $stmh=$dbh->prepare($sql);
340
-
341
- $data[]=$id;
342
-
343
- $data[]=$_POST['pref'];
344
-
345
-
346
-
347
- $stmh->execute($data);
348
-
349
- }
350
-
351
- catch(PDOException $e)
352
-
353
- {
354
-
355
- print '不正な操作です0<br />';
356
-
357
- print $e->getMessage();
358
-
359
- print '都道府県名が入力されていません。';
360
-
361
- exit();
362
-
363
- }
364
-
365
- }
366
-
367
-
368
-
369
- //アピール文
370
-
371
- if(isset($_POST['appeal']))
372
-
373
- {
374
-
375
- try
376
-
377
- {
378
-
379
- $sql='INSERT INTO mst_appeal (mem_id,appeal) VALUES (?,?)';
380
-
381
-
382
-
383
- $stmh=$dbh->prepare($sql);
384
-
385
- $data[]=$id;
386
-
387
- $data[]=$_POST['appeal'];
388
-
389
-
390
-
391
- $stmh->execute($data);
392
-
393
-
394
-
395
- }
396
-
397
- catch(PDOException $e)
398
-
399
- {
400
-
401
-
402
-
403
- print '不正な操作です1<br />';
404
-
405
- print $e->getMessage();
406
-
407
- print 'アピール文が記入されていません。<br />';
408
-
409
- print '<input type="button" onclick="history.back()" value="戻る">';
410
-
411
- exit();
412
-
413
- }
414
-
415
-
416
-
417
- }
418
-
419
- //main_picの処理
420
-
421
- if(isset($_POST['main_pic']))
422
-
423
- {
424
-
425
-
426
-
427
- try
428
-
429
- {
430
-
431
- $sql='INSERT INTO mst_img (mem_id,image,img_flg) VALUES (?,?,?)';
432
-
433
-
434
-
435
- $stmh=$dbh->prepare($sql);
436
-
437
- $data[]=$id;
438
-
439
- $data[]=$_POST['main_pic'];
440
-
441
- $data[]='1';
442
-
443
-
444
-
445
- $stmh->execute($data);
446
-
447
-
448
-
449
- }
450
-
451
- catch(PDOException $e)
452
-
453
- {
454
-
455
-
456
-
457
- print '不正な操作です2<br />';
458
-
459
- print $e->getMessage();
460
-
461
- print 'メイン画像登録時にエラーが発生しました。<br />';
462
-
463
- print '<input type="button" onclick="history.back()" value="戻る">';
464
-
465
- exit();
466
-
467
- }
468
-
469
- }
470
-
471
-
472
-
473
- //画像1の処理
474
-
475
-
476
-
477
- if(isset($_POST['pic1']))
478
-
479
- {
480
-
481
- try
482
-
483
- {
484
-
485
- $sql='INSERT INTO mst_img (mem_id,image) VALUES (?,?)';
486
-
487
-
488
-
489
- $stmh=$dbh->prepare($sql);
490
-
491
- $data[]=$id;
492
-
493
- $data[]=$_POST['pic1'];
494
-
495
-
496
-
497
- $stmh->execute($data);
498
-
499
-
500
-
501
- }
502
-
503
- catch(PDOException $e)
504
-
505
- {
506
-
507
-
508
-
509
- print '不正な操作です3<br />';
510
-
511
- print $e->getMessage();
512
-
513
- print '画像1登録時にエラーが発生しました。<br />';
514
-
515
- print '<input type="button" onclick="history.back()" value="戻る">';
516
-
517
- exit();
518
-
519
- }
520
-
521
- }
522
-
523
-
524
-
525
- //画像2の処理
526
-
527
-
528
-
529
- if(isset($_POST['pic2']))
530
-
531
- {
532
-
533
- try
534
-
535
- {
536
-
537
- $sql='INSERT INTO mst_img (mem_id,image) VALUES (?,?)';
538
-
539
-
540
-
541
- $stmh=$dbh->prepare($sql);
542
-
543
- $data[]=$id;
544
-
545
- $data[]=$_POST['pic2'];
546
-
547
-
548
-
549
- $stmh->execute($data);
550
-
551
-
552
-
553
- }
554
-
555
- catch(PDOException $e)
556
-
557
- {
558
-
559
-
560
-
561
- print '不正な操作です4<br />';
562
-
563
- print $e->getMessage();
564
-
565
- print '画像2登録時にエラーが発生しました。<br />';
566
-
567
- print '<input type="button" onclick="history.back()" value="戻る">';
568
-
569
- exit();
570
-
571
- }
572
-
573
- }
574
-
575
-
576
-
577
- //画像3の処理
578
-
579
-
580
-
581
- if(isset($_POST['pic']))
582
-
583
- {
584
-
585
- try
586
-
587
- {
588
-
589
- $sql='INSERT INTO mst_img (mem_id,image) VALUES (?,?)';
590
-
591
-
592
-
593
- $stmh=$dbh->prepare($sql);
594
-
595
- $data[]=$id;
596
-
597
- $data[]=$_POST['pic3'];
598
-
599
-
600
-
601
- $stmh->execute($data);
321
+ $sql1='INSERT INTO mst_pref (mem_id,pref) VALUES (?,?)';
322
+
323
+
324
+
325
+ $stmh1=$dbh1->prepare($sql1);
326
+
327
+ $stmh1 -> bindValue(1, $id, PDO::PARAM_INT);
328
+
329
+ $stmh1 -> bindValue(2, $_POST['pref'], PDO::PARAM_STR);
330
+
331
+
332
+
333
+ $stmh1->execute();
334
+
335
+
336
+
337
+ $sql2='INSERT INTO mst_appeal (mem_id,appeal) VALUES (?,?)';
338
+
339
+
340
+
341
+ $stmh2=$dbh2->prepare($sql2);
342
+
343
+ $stmh2 -> bindValue(1, $id, PDO::PARAM_INT);
344
+
345
+ $stmh2 -> bindValue(2, $_POST['appeal'], PDO::PARAM_STR);
346
+
347
+
348
+
349
+ $stmh2->execute();
350
+
351
+
352
+
353
+ $sql3='INSERT INTO mst_img (mem_id,image,img_flg) VALUES (?,?,?)';
354
+
355
+
356
+
357
+ $stmh3=$dbh3->prepare($sql3);
358
+
359
+ $stmh3 -> bindValue(1, $id, PDO::PARAM_INT);
360
+
361
+ $stmh3 -> bindValue(2, $_POST['main_pic'], PDO::PARAM_STR);
362
+
363
+ $stmh3 -> bindValue(3, '1', PDO::PARAM_INT);
364
+
365
+
366
+
367
+ $stmh3->execute();
368
+
369
+
370
+
371
+ $sql4='INSERT INTO mst_img (mem_id,image) VALUES (?,?)';
372
+
373
+
374
+
375
+ $stmh4=$dbh4->prepare($sql4);
376
+
377
+ $stmh4 -> bindValue(1, $id, PDO::PARAM_INT);
378
+
379
+ $stmh4 -> bindValue(2, $_POST['pic1'], PDO::PARAM_STR);
380
+
381
+ $stmh4->execute();
382
+
383
+
384
+
385
+ $sql5='INSERT INTO mst_img (mem_id,image) VALUES (?,?)';
386
+
387
+
388
+
389
+ $stmh5=$dbh5->prepare($sql5);
390
+
391
+ $stmh5 -> bindValue(1, $id, PDO::PARAM_INT);
392
+
393
+ $stmh5 -> bindValue(2, $_POST['pic2'], PDO::PARAM_STR);
394
+
395
+
396
+
397
+ $stmh5->execute();
398
+
399
+
400
+
401
+ $sql6='INSERT INTO mst_img (mem_id,image) VALUES (?,?)';
402
+
403
+
404
+
405
+ $stmh6=$dbh6->prepare($sql6);
406
+
407
+ $stmh6 -> bindValue(1, $id, PDO::PARAM_INT);
408
+
409
+ $stmh6 -> bindValue(2, $_POST['pic3'], PDO::PARAM_STR);
410
+
411
+ $stmh6->execute();
602
412
 
603
413
 
604
414
 
@@ -606,36 +416,10 @@
606
416
 
607
417
 
608
418
 
609
- }
610
-
611
- catch(PDOException $e)
612
-
613
- {
614
-
615
-
616
-
617
- print '不正な操作です5<br />';
618
-
619
- print $e->getMessage();
620
-
621
- print '画像3登録時にエラーが発生しました。<br />';
622
-
623
- print '<input type="button" onclick="history.back()" value="戻る">';
624
-
625
- exit();
626
-
627
- }
628
-
629
- }
630
-
631
- print 'プロフィールを登録しました。<br />';
632
-
633
419
  ?>
634
420
 
635
421
  </body>
636
422
 
637
423
  </html>
638
424
 
639
- コード
640
-
641
425
  ```