正常に情報をデータベースに入力したい
phpファイルでの作業中に、データベースのテーブルの中のレコードが作られないという状況になりました。
表記法の誤った点をご指摘いただきたいです。
該当のソースコード
check.php
PHP
1<?php 2session_start(); 3require('dbconnect.php'); 4if(!isset($_SESSION['join'])){ 5header('Location: index.php'); 6exit(); 7} 8if(!empty($_POST)){ 9 10 $statement = $db->prepare('INSERT INTO members SET name=?, email 11 =?, password = ?, picture=?, created=NOW()'); 12 $statement->execute(array 13 ($_SESSION['join']['name'], 14 $_SESSION['join']['email'], 15 sha1($_SESSION['join']['password']), 16 $_SESSION['join']['image'] 17)); 18 19 header('Location: thanks.php'); 20 exit(); 21} 22?> 23<!DOCTYPE html> 24<html lang="ja"> 25<head> 26 <meta charset="UTF-8"> 27 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 28 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 29 <title>会員登録</title> 30 31 <link rel="stylesheet" href="../style.css" /> 32</head> 33<body> 34<div id="wrap"> 35<div id="head"> 36<h1>会員登録</h1> 37</div> 38 39<div id="content"> 40<p>記入した内容を確認して、「登録する」ボタンをクリックしてください</p> 41<form action="" method="post"> 42 <input type="hidden" name="action" value="submit" /> 43 <dl> 44 <dt>ニックネーム</dt> 45 <dd> 46 <?php print(htmlspecialchars($_SESSION['join']['name'], ENT_QUOTES));?> 47 </dd> 48 <dt>メールアドレス</dt> 49 <dd> 50 <?php print(htmlspecialchars($_SESSION['join']['email'], ENT_QUOTES));?> 51 </dd> 52 <dt>パスワード</dt> 53 <dd> 54 【表示されません】 55 </dd> 56 <dt>写真など</dt> 57 <dd>] 58 <?php if($_SESSION['join']['image'] !== ''):?> 59 <img src = "../member_picture/<?php print(htmlspecialchars($_SESSION['join']['image'],ENT_QUOTES)); ?>" 60 <?php endif;?> 61 </dd> 62 </dl> 63 <div><a href="index.php?action=rewrite">« 書き直す</a> | <input type="submit" value="登録する" /></div> 64</form> 65</div> 66 67</div> 68</body> 69</html>
index.php
php
1<?php 2session_start(); 3if(!empty($_POST)){ 4 if($_POST['name'] === '' ){ 5 $error['name'] = 'blank'; 6 } 7 if($_POST['email'] === '' ){ 8 $error['email'] = 'blank'; 9 } 10 if(strlen($_POST['password']) < 4){ 11 $error['password'] = 'length'; 12 } 13 if($_POST['password'] === '' ){ 14 $error['password'] = 'blank'; 15 } 16 $filename = $_FILES['image']['name']; 17 if(!empty($filename)){ 18 $ext = substr($filename,-3); 19 if($ext != 'png' && $ext != 'jpeg' && $ext != 'gif'){ 20 $error['image'] = 'type'; 21 } 22 } 23 if(empty($error)){ 24 // ファイル名を指定 25 $image = date('YmdHis') . $_FILES['image']['name']; 26 move_uploaded_file($_FILES['image']['tmp_name'],"../member_picture/" . $image); 27 $_SESSION['join'] = $_POST; 28 $_SESSION['join']['image'] = $image; 29 header('Location: check.php'); 30 exit(); 31 } 32} 33if($_REQUEST['action'] == 'rewrite'){ 34 $_POST = $_SESSION['join']; 35} 36?> 37<!DOCTYPE html> 38<html lang="ja"> 39<head> 40 <meta charset="UTF-8"> 41 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 42 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 43 <title>会員登録</title> 44 45 <link rel="stylesheet" href="../style.css" /> 46</head> 47<body> 48<div id="wrap"> 49<div id="head"> 50<h1>会員登録</h1> 51</div> 52 53<div id="content"> 54<p>次のフォームに必要事項をご記入ください。</p> 55<form action="" method="post" enctype="multipart/form-data"> 56<!-- foem action=""であっても自身のリンクにサーバーを介して通信している --> 57 <dl> 58 <dt>ニックネーム<span class="required">必須</span></dt> 59 <dd> 60 <input type="text" name="name" size="35" maxlength="255" value="<?php print(htmlspecialchars($_POST['name'], ENT_QUOTES));?>" /> 61 <?php if ($error['name'] === 'blank'): ?> 62 <p class= "error">ニックネームを入力してください</p> 63 <?php endif;?> 64 </dd> 65 <dt>メールアドレス<span class="required">必須</span></dt> 66 <dd> 67 <input type="text" name="email" size="35" maxlength="255" value="" /> 68 <?php if ($error['email'] === 'blank'): ?> 69 <p class= "error">メールアドレスを入力してください</p> 70 <?php endif;?> 71 </dd> 72 <dt>パスワード<span class="required">必須</span></dt> 73 <dd> 74 <input type="password" name="password" size="10" maxlength="20" value="" /> 75 <?php if ($error['password'] === 'length'): ?> 76 <p class= "error">4文字以上で入力してください</p> 77 <?php endif;?> 78 <?php if ($error['password'] === 'blank'): ?> 79 <p class= "error">パスワードを入力してください</p> 80 <?php endif;?> 81 </dd> 82 <dt>写真など</dt> 83 <dd> 84 <input type="file" name="image" size="35" value="test" /> 85 <?php if($error['image'] === 'type'):?> 86 <p class = 'error'>末尾がpng,jpeg,gifのファイルをアップロードしてください</p> 87 <?php endif;?> 88 </dd> 89 </dl> 90 <div><input type="submit" value="入力内容を確認する" /></div> 91</form> 92</div> 93</body> 94</html> 95
dbconnect.php
PHP
1<?php 2try{ 3 $db = new PDO('mysql:dbname = mini_bbs;host=127.0.0.1;charset=utf8', 'root', 'root' ); 4}catch(PDOException $e){ 5print('db接続エラー' . $e->getMessage()); 6} 7 8 9?>
試したこと
実際にthanks.phpへのページ遷移は成功、データベース接続も成功していることから、コード内に至らぬ点があると判断しています。くまなく確認していますが、依然として状況は変わらぬままです。
回答2件
あなたの回答
tips
プレビュー