前提・実現したいこと
PHPからMysqlへINSERT処理を行いデータベースを追加したい。
PHP, Mysql初心者です。過去記事見たり、その他サイトを見ましたが、関連していなそうでした。
発生している問題・エラーメッセージ
PHPでMysqlへINSERT処理を行いたいのですが、データベースにデータが飛びません。
エラー表示もされず、何が間違いなのか調べてもわかりません。
該当のソースコード
PHP
1//index.php 2 3<?php 4session_start(); 5 6if(!empty($_POST)){ 7 if($_POST['nameSei']==''){ 8 $error['nameSei']='blank'; 9 } 10 if($_POST['nameMei']==''){ 11 $error['nameMei']='blank'; 12 } 13 if($_POST['address1']==''){ 14 $error['address1']='blank'; 15 } 16 $address1=strval($_POST['address1']); 17 if(strlen($address1) != 7){ 18 $error['address1']='length'; 19 } 20 21 if($_POST['address2']==''){ 22 $error['address2']='blank'; 23 } 24 if($_POST['phone']==''){ 25 $error['phone']='blank'; 26 } 27 28 if(empty($error)){ 29 $_SESSION['join']=$_POST; 30 header('Location:questionForm.php'); 31 exit(); 32 } 33} 34?> 35 36<!DOCTYPE html> 37<html lang="ja"> 38 <head> 39 <meta charset="utf-8"> 40 <title>【練習】問い合わせフォーム</title> 41 </head> 42 <body> 43 <p><お問い合わせフォーム></p> 44 <form action="" method="post"> 45 <dl> 46 <dt>お名前</dt> 47 <dd> 48 【必須】姓:<input type="text", name="nameSei" size="7"> 49 <?php if(isset($error['nameSei']) && $error['nameSei'] == 'blank'): ?> 50 <label>姓を入力してください</label><br> 51 <?php endif; ?> 52 【必須】名:<input type="text", name="nameMei" size="7"> 53 <?php if(isset($error['nameMei']) && $error['nameMei'] == 'blank'): ?> 54 <label>名を入力してください</label> 55 <?php endif; ?> 56 </dd> 57 <dt>性別</dt> 58 <dd> 59 <input type="radio" name="gender" value="男性" checked>男性 60 <input type="radio" name="gender" value="女性">女性 61 </dd> 62 <dt>生年月日</dt> 63 <dd> 64 <select name="year"> 65 <?php 66 $now = date("Y"); 67 for($i=1900; $i<=$now; $i++): ?> 68 <option value="<?php echo $i;?>"><?php echo $i;?></option> 69 <?php endfor;?> 70 </select>年 71 <select name="month"> 72 <?php 73 $now = date("m"); 74 for($i=1; $i<=12; $i++): ?> 75 <option value="<?php echo $i;?>"><?php echo $i;?></option> 76 <?php endfor;?> 77 </select>月 78 <select name="day"> 79 <?php 80 $now = date("d"); 81 for($i=1; $i<=31; $i++): ?> 82 <option value="<?php echo $i;?>"><?php echo $i;?></option> 83 <?php endfor;?> 84 </select>日 85 </dd> 86 <dt>〒郵便番号【必須】</dt> 87 <dd> 88 <input type="text" name="address1"> 89 <?php if(isset($error['address1']) && $error['address1'] == 'blank'):?> 90 <label>郵便番号を入力してください</label> 91 <?php endif; ?> 92 <?php if(isset($error['address1']) && $error['address1'] == 'length'):?> 93 <label>郵便番号を7桁入力してください</label> 94 <?php endif; ?> 95 </dd> 96 <dt>住所【必須】</dt> 97 <dd> 98 <input type="text" name="address2"> 99 <?php if(isset($error['address2']) && $error['address2'] = 'blank'):?> 100 <label>住所を入力してください</label> 101 <?php endif; ?> 102 </dd> 103 <dt>電話番号【必須】</dt> 104 <dd> 105 <input type="text" name="phone"> 106 <?php if(isset($error['phone']) && $error['phone'] = 'blank'):?> 107 <label>電話番号を入力してください</label> 108 <?php endif; ?> 109 </dd> 110 <dt>メールアドレス【任意】</dt> 111 <dd> 112 <input type="text" name="email"> 113 </dd> 114 <dt>お問い合わせ内容</dt> 115 <dd> 116 <textarea name="question" rows="10" cols="50"></textarea> 117 </dd> 118 </dl> 119 <input type="submit" value="送信"> 120 </form> 121 </body> 122</html>
PHP
1//questionForm.php 2 3<?php 4session_start(); 5 6try{ 7 $db=new PDO('mysql:dbname=practice;host=127.0.0.1;charset=utf8','root',''); 8}catch (PDOException $e){ 9 echo 'DB接続エラー:'. $e->getMessage(); 10} 11 12if(!isset($_SESSION['join'])){ 13 header('Location:index.php'); 14 exit(); 15} 16 17if(!empty($_POST)){ 18 $statement=$db->prepare('INSERT INTO question_form SET nameSei=?, nameMei=?, gender=?, year=?, address1=?, address2=?, phone=?, email=?, question=?, created=NOW()'); 19 echo $ret=$statement->execute(array( 20 $_SESSION['join']['nameSei'], 21 $_SESSION['join']['nameMei'], 22 $_SESSION['join']['gender'], 23 $_SESSION['join']['year'], 24 $_SESSION['join'],['address1'], 25 $_SESSION['join'],['address2'], 26 $_SESSION['join'],['phone'], 27 $_SESSION['join'],['email'], 28 $_SESSION['join'],['question'], 29 $_SESSION['join'],['created'], 30 )); 31 unset($_SESSION['join']); 32 33 header('Location: Receive.php'); 34 exit(); 35} 36?> 37 38<!DOCTYPE html> 39<html lang="ja"> 40 <head> 41 <meta charset="utf-8"> 42 <title>【練習】問い合わせフォーム</title> 43 </head> 44 <body> 45 <p>【受け付けました】お問い合わせ内容</p> 46 <form action="" method="post"> 47 <input type="hidden" name="action" value="submit"> 48 <dl> 49 <dt>お名前</dt> 50 <dd> 51 姓:<?php echo htmlspecialchars($_SESSION['join']['nameSei'], ENT_QUOTES);?><br> 52 名:<?php echo htmlspecialchars($_SESSION['join']['nameMei'], ENT_QUOTES);?> 53 </dd> 54 <dt>性別</dt> 55 <dd> 56 <?php echo htmlspecialchars($_SESSION['join']['gender'], ENT_QUOTES);?> 57 </dd> 58 <dt>生年月日</dt> 59 <dd> 60 <?php echo htmlspecialchars($_SESSION['join']['year'], ENT_QUOTES);?>年 61 <?php echo htmlspecialchars($_SESSION['join']['month'], ENT_QUOTES);?>月 62 <?php echo htmlspecialchars($_SESSION['join']['day'], ENT_QUOTES);?>日 63 </dd> 64 <dt>〒郵便番号</dt> 65 <dd> 66 <?php echo htmlspecialchars($_SESSION['join']['address1'], ENT_QUOTES);?> 67 </dd> 68 <dt>住所</dt> 69 <dd> 70 <?php echo htmlspecialchars($_SESSION['join']['address2'], ENT_QUOTES);?> 71 </dd> 72 <dt>電話番号</dt> 73 <dd> 74 <?php echo htmlspecialchars($_SESSION['join']['phone'], ENT_QUOTES);?> 75 </dd> 76 <dt>メールアドレス</dt> 77 <dd> 78 <?php if($_SESSION['join']['email'] == ''):?> 79 <label>未入力</label> 80 <?php endif; ?> 81 <?php echo htmlspecialchars($_SESSION['join']['email'], ENT_QUOTES);?> 82 </dd> 83 <dt>お問い合わせ内容</dt> 84 <dd> 85 <?php echo htmlspecialchars($_SESSION['join']['question']); ?> 86 </dd> 87 </dl> 88 </form> 89 </body> 90</html> 91
試したこと
・DBは接続できているようです。
・どうやら、questionForm.phpのif(!empty($_POST))以降が機能していないようです。
・SESSIONにデータは保存されることは確認し、quetionForm.php内のheader('Location: Receive.php');を削除すれば、問い合わせ内容が表示できます。
回答2件
あなたの回答
tips
プレビュー