ユーザー登録の際、idとpasswordを入力してもらい、それをkeijibanテーブルに保存して、保存したものをSELECTで表示させる機能の実装を行っておりますが、結果は表示されず困っております。
度々申し訳ございませんが、対処法をご教授いただければ幸いです。
php
1 2<!DOCTYPE html> 3<html lang="en"> 4<head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 8 <title>簡易掲示板</title> 9</head> 10 11 12<body> 13 14 <h1>ユーザー登録</h1> 15 <form method="post" action="DB.php"> 16 Id:<input type="text" name="ID" value=""><br> 17 Password:<input type="text" name="NAME" value=""> 18 <input type="submit" name="regist" value="Post"> 19 </form> 20 21 <?php 22 $host = '*******'; 23 $dbname = '***********'; 24 $dbuser = '*************'; 25 $dbpassword = '*************'; 26 $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8","$dbuser","$dbpassword"); 27 28 #データベースへの登録 29 if( isset($_POST['regist']) ){ 30 $id = $_POST['ID']; 31 $name = $_POST['NAME']; 32 $sql = "INSERT INTO keijiban (id, name) VALUES ('$id', '$name')"; 33 $res = $pdo->query($sql); 34 35 #テーブル内容の表示 36 $sql = "SELECT * FROM keijiban ORDER BY id DESC"; 37 $stmt = $pdo->query($sql); 38 foreach ($stmt as $row) { 39 echo $row['ID'].' '.$row['NAME']; 40 echo '<br>'; 41 } 42} 43 44 #リロード時の二重投稿を防止 45 if($_SERVER['REQUEST_METHOD'] === 'POST') { 46 header('Location:DB.php', true, 303); 47 } 48 #終了 49 $stmt = null; 50 $pdo = null; 51?> 52</body> 53</html> 54
前の質問につけた私の回答での指摘やコメントがほとんど活かされてませんが何か分かりづらかったでしょうか。
https://teratail.com/questions/174175
これだと「前の質問の回答見直して一通り対応してきてください」だけの回答になりますけど…。
すみません、項目を増やしたテーブルを新規に作り、そちらにデータを入れようとしたら、うまくいかなくなってしまいました。
追加したり変更したなら整合性をとればいいだけの話と思います。
その話ではなく、PHPのコードの組み方の問題です。
前の質問とコードの作り方が変わってません。「解決済み」としたいならなるべく回答内容をきちんと理解した上でしていただきたいです。
私もPHPならある程度、アドバイスできるところも多いかなと思って回答には力を入れてはいますが、
あまり理解されないまま次々と質問されてしまうと「分かってないのに解決済みにしたの?」と不信感もつのります(たぶん見ている人は同じようなことを感じています)
分からないのでしたらその場で聞いてください。解決済みとしてしまっては見返すことはほとんどなくなりますよ。
以前、掲示板で質問しまくっていた人に、10年経っても同じ質問しているような人が居ましたがそんな感じですね。
学習の仕方から考え直した方がいいですよ。
ご指摘ありがとうございます。何度もスミマセン。しっかり解決したうえで解決済みボタンを押させていただきます。今、他の方からもいただいた意見を一つずつ検証している最中でございます。また、不明な点があった場合には質問させていただきます。宜しくお願い致します。
「解決」は「質問の解決」となってしまうと「理解した」という意味にはなりません。
私のように「今後直面しうる問題も含めた上でのアドバイス」を蛇足的に書く回答者も少なくないです。
となると「質問・問題の解決」だけではなく「回答内容をきちんと理解できたか」を「解決基準」としないと
せっかく(ある程度の労力や時間をかけて)書かれたコメントが全て無駄になります。
回答者であるという立場から、今後おきうるであろう問題も経験してきているわけですから、
そこをきちんと避けられるようなアドバイスが書かれているのであれば、理解しようと努めてください。
本来は 理解した=解決した なので。
https://teratail.com/help/question-tips#questionTips4-2
>多くの回答ユーザーが、~~
のところを参照。
ご質問自体には関係ありませんが、パスワードは<input type="text" ...>ではなく<input type="password" ...>とした方がいいでしょう。また、データベースにパスワードを保存する場合は、必ずpassword_hash()などでハッシュ処理をしてからにしましょう。そうでないと、データベースが攻撃を受けたときにパスワードが盗まれてしまうなど、セキュリティ上大変危険です。