質問編集履歴

2

コード修正

2020/06/07 07:36

投稿

chimo
chimo

スコア55

test CHANGED
File without changes
test CHANGED
@@ -554,4 +554,72 @@
554
554
 
555
555
 
556
556
 
557
+ 【追記】回答をうけて削除部分を以下のように書きなおしました
558
+
559
+ ```php
560
+
561
+ //----------------【DELETEで指定した番号のメッセージを削除】--------------------
562
+
563
+
564
+
565
+ $deleteNo=$_POST['deleteNo'];
566
+
567
+ $delete_pass=$_POST['pass'];
568
+
569
+
570
+
571
+ //SELECTで削除番号とパスワードが一致するデータを取得
572
+
573
+ $sql="SELECT * FROM $tb_name WHERE number=:number,password=:password";
574
+
575
+ $stmt=$pdo->prepare($sql);
576
+
577
+ $stmt->bindValue(':number',$deleteNo,PDO::PARAM_INT);
578
+
579
+ $stmt->bindValue(':password',$delete_pass,PDO::PARAM_STR);
580
+
581
+
582
+
583
+ $delete=$stmt->execute();
584
+
585
+
586
+
587
+ if($delete){
588
+
589
+ $sql="DELETE FROM $tb_name WHERE $deleteNo";
590
+
591
+ $stmt->$pdo->prepare($sql);
592
+
593
+ $stmt->execute();
594
+
595
+ echo "メッセージを削除しました";
596
+
597
+ }else{
598
+
599
+ echo "パスワードまたは削除番号が間違っています";
600
+
601
+ }
602
+
603
+
604
+
605
+ ```
606
+
607
+ セレクトでパスワードと削除番号と一致するデータを取得しその結果をif文に渡し、trueの場合削除を行うという意図でコードを書きました。実行した結果以下のようなエラーが出てしまいました。
608
+
609
+ ```
610
+
611
+ Notice: Undefined index: deleteNo in /home/co-19-208.99sv-coco.com/public_html/kadai_2.php/kadai_2_advanced/kadai_2_advanced.php on line 173
612
+
613
+
614
+
615
+ Notice: Undefined index: pass in /home/co-19-208.99sv-coco.com/public_html/kadai_2.php/kadai_2_advanced/kadai_2_advanced.php on line 174
616
+
617
+ SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'password=?' at line 1
618
+
619
+ ```
620
+
621
+ しかし、該当箇所を見てみてもおかしい部分は見つかりません。
622
+
623
+
624
+
557
625
  他になにかデバッグ方法や解決策あれば教えていただきたいです!

1

デバッグ方法追加

2020/06/07 07:36

投稿

chimo
chimo

スコア55

test CHANGED
File without changes
test CHANGED
@@ -478,7 +478,7 @@
478
478
 
479
479
  【デバッグ】
480
480
 
481
- 本当にパスワードと削除番号が一致しているか確かめるために以下のコードで確かめました
481
+ 本当にパスワードと削除番号が一致しているか確かめるために以下のコードで確かめました
482
482
 
483
483
  ```php
484
484
 
@@ -506,4 +506,52 @@
506
506
 
507
507
 
508
508
 
509
+ ➁そもそもif文の中が機能しているのか以下のコードで確かめた
510
+
511
+ ```php
512
+
513
+ foreach($stmt as $loop){
514
+
515
+ if(($deleteNo==$loop['number'])&&($delete_pass==$loop['password'])){
516
+
517
+ //間違い探し
518
+
519
+ echo $deleteNo."<br>";
520
+
521
+ echo $loop['number']."<br>";
522
+
523
+ echo $delete_pass."<br>";
524
+
525
+ echo $loop['password']."<br>";
526
+
527
+
528
+
529
+ //DELETEの処理
530
+
531
+ $sql="DELETE FROM $tb_name WHERE number=:number";
532
+
533
+ $stmt=$pdo->prepare($sql);
534
+
535
+ $stmt->bindValue(':number',$deleteNo,PDO::PARAM_INT);
536
+
537
+ $stmt->execute();
538
+
539
+ echo "メッセージを削除しました";
540
+
541
+ }else{
542
+
543
+ echo "パスワードまたは削除番号が間違っています";
544
+
545
+ exit();
546
+
547
+ }
548
+
549
+ }
550
+
551
+ ```
552
+
553
+ 結果://間違い探しの内容(値)が表示されず、「パスワードまたは削除番号が間違っています」のみ表示された
554
+
555
+
556
+
509
557
  他になにかデバッグ方法や解決策あれば教えていただきたいです!