質問編集履歴
2
コード修正
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
デバッグ方法追加
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
|
他になにかデバッグ方法や解決策あれば教えていただきたいです!
|