MACユーザーです。
市販の教科書「気づけば プロ並み PHP改訂版」を使ってPHPを勉強しています。
form情報をPOSTで受け取ってデータベースに登録をしたいのですがコードをサンプル通りに打ち込んでも
tyr~catch文のcatchのプログラムしか作動しません。
原因が検討つかず、お手伝いをお願いしたいです、よろしくお願い致します。
補足情報(FW/ツールのバージョンなど)
MAMPを使っています。エディタはAtomです。
発生している問題・エラーメッセージ
linterによるエラーメッセージはありません。 結果として、'只今障害によりご迷惑をおかけしております。'と出てきます。 データベースを見ても登録はされていません。
確認したこと
、、、
データベースにアクセスする際のデータベース名、ポート名(localhost8889は間違いありません)
$user,$passwordの'root'
html
1ファイル名staff_add.php 2<!DOCTYPE html> 3<html lang="en" dir="ltr"> 4<head> 5<meta charset="UTF-8"> 6<title>ロクマル農園</title> 7</head> 8<body> 9<h1>スタッフ追加</h1> 10<!-- <p>スタッフ名を入力してください。</p> --> 11<form action="staff_add_check.php" method="post"> 12 スタッフ名を入力してください<br> 13 <input type="text" name="name" style="width:200px"><br> 14 パスワードを入力してください。<br> 15 <input type="password" name="pass" style="width:100px"><br> 16 パスワードをもう一度入力してください。<br> 17 <input type="password" name="pass2" style="width:100px"><br> 18 <br> 19 <input type="button" onclick="history.back()" value="戻る"> 20 <input type="submit" value="OK"> 21</form> 22</body> 23</html>
html2
1ファイル名staff_add_check.php 2<!DOCTYPE html> 3<html lang="en" dir="ltr"> 4<head> 5<meta charset="UTF-8"> 6<title></title> 7</head> 8<body> 9 10<?php 11 12$staff_name=$_POST['name']; 13$staff_pass=$_POST['pass']; 14$staff_pass2=$_POST['pass2']; 15 16$staff_name= htmlspecialchars($staff_name, ENT_QUOTES,'utf-8'); 17$staff_pass= htmlspecialchars($staff_pass, ENT_QUOTES,'utf-8'); 18$staff_pass2= htmlspecialchars($staff_pass2, ENT_QUOTES,'utf-8'); 19 20if($staff_name=='') 21{ 22 print 'スタッフ名が入力されていません。<br>'; 23} 24else 25{ 26 print 'スタッフ名:'; 27 print $staff_name; 28 print '<br>'; 29} 30 31if($staff_pass=='') 32{ 33 print 'パスワードが入力されていません。<br>'; 34} 35// else 36// { 37// print $staff_pass; 38// } 39 40if($staff_pass!==$staff_pass2) 41{ 42 print 'パスワードが一致していません。<br>'; 43} 44 45if($staff_name==''||$staff_pass==''||$staff_pass!=$staff_pass2) 46{ 47 print '<form>'; 48 print '<input type="button" onclick="history.back()" value="戻る">'; 49 print '</form>'; 50} 51else { 52 $staff_pass=md5($staff_pass); 53 print '<form method="POST" action="staff_add_done.php">'; 54 print '<input="hidden" name="name" value="'.$staff_name.'">'; 55 print '<input="hidden" name="pass" value="'.$staff_pass.'">'; 56 print '<br>'; 57 print '<input type="button" onclick="history.back()" value="戻る">'; 58 print '<input type="submit" value="OK">'; 59 print '</form>'; 60} 61 62 ?> 63</body> 64</html> 65
html3
1ファイル名staff_add_done.php 2<!DOCTYPE html> 3<html lang="en" dir="ltr"> 4<head> 5<meta charset="UTF-8"> 6<title></title> 7</head> 8<body> 9 10<?php 11 12try 13{ 14 15$staff_name = $_POST['name']; 16$staff_pass = $_POST['pass']; 17 18$staff_name = htmlspecialchars($staff_name,ENT_QUOTES,'UTF-8'); 19$staff_pass = htmlspecialchars($staff_pass,ENT_QUOTES,'UTF-8'); 20 21$dsn = 'mysql:dbname=shop;host=localhost8889;charset=utf8'; 22$user = 'root'; 23$password = ''; 24$dbh = new PDO($dsn,$user,$password); 25$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 26 27$sql = 'INSERT INTO mst_staff(name,password) VALUES (?,?)'; 28$stmt = $dbh->prepare($sql); 29$data[] =$staff_name; 30$data[] =$staff_pass; 31$stmt->execute($data); 32 33$dbh = null; 34 35print $staff_name; 36print 'さんを追加しました。<br>'; 37 38} 39catch (Exception $e) 40{ 41print '只今障害によりご迷惑をおかけしております。'; 42exit(); 43} 44 45 ?> 46 47 <a href="staff_list.php">戻る</a> 48</body> 49</html> 50
回答1件
あなたの回答
tips
プレビュー