登録フォームから、ユーザー情報を入力したら、データーベースに情報を格納する、新規ユーザ登録ページを作成したのですが、データベースにデーターが挿入されない為、以下のコードにて、問題点がありましたら、教えて頂きたいです。
以下は、「user_register.php」になります。
php
1<?php 2require_once 'function.php'; 3require_once 'config.php'; 4 5session_start(); 6$err = []; 7 8if(!empty($_POST)){ 9 10 $name = filter_input(INPUT_POST,'name'); 11 $password = filter_input(INPUT_POST,'password'); 12 13 if(!$name){ 14 $err['name'] = '名前を入力してください'; 15 16 } 17 18 if(!$password){ 19 20 $err['password'] = 'パスワードを入力してください'; 21 22 } 23 24 if(empty($err)){ 25 26 $password = password_hash($password,PASSWORD_DEFAULT); 27 28 try{ 29 //データベースにユーザー情報登録 30 $db = db_connection(DSN,DB_USERNAME,DB_PASSWORD); 31 $stmt = $db->prepare("INSERT INTO users_2(name,password) VALUES(:name,: password "); 32 33 $stmt->bindValue(':name',$name,PDO::PARAM_STR); 34 $stmt->bindValue(':password',$password,PDO::PARAM_STR); 35 $stmt->execute(); 36 37 //登録ユーザーのid取得 38 $stmt = $db->prepare("SELECT id FROM users_2 WHERE name = :name AND password = :password "); 39 $stmt->bindValue(':name',$name,PDO::PARAM_STR); 40 $stmt->bindValue(':password',$password,PDO::PARAM_STR); 41 $stmt->execute(); 42 43 if($row = $stmt->fetch()){ 44 $_SESSION['id'] = $row['id']; 45 }else{ 46 echo 'エラー'; 47 } 48 exit(); 49 50 }catch(PDOException $e){ 51 52 $e->getMessage(); 53 exit(); 54 55 } 56 57 } 58 59} 60 61?> 62 63 64 65<!DOCTYPE html> 66<html lang="en"> 67<head> 68 <meta charset="UTF-8"> 69 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 70 <title>register</title> 71</head> 72<body> 73 <h1>ユーザー登録</h1> 74 <form action="user_register.php" method="post"> 75 <p>名前:<input type="text" name="name"></p> 76 <p>パスワード:<input type="password" name="password"></p> 77 <input type="submit"value="送信"> 78 </form> 79 <?php 80 if(!empty($err)): 81 foreach($err as $value): ?> 82 <p><?= $value ?></p> 83 <?php endforeach; 84 85 endif; 86?> 87 88</body> 89</html>
以下は、「function.php」になります
php
1<?php 2function db_connection($dsn,$user,$password){ 3 $db = new PDO($dsn,$user,$password); 4 $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 5 $db->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); 6 return $db; 7} 8 9function h($str){ 10 return htmlspecialchars($str,ENT_QUOTES,'UTF-8'); 11}
以下は、「config.php」になります
php
1<?php 2define('DSN','mysql:host=localhost;dbname=online_bbs;charset=utf8'); 3define('DB_USERNAME', 'root'); 4define('DB_PASSWORD', '12345');
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/11 03:40
2019/04/11 03:43
2019/04/11 03:50 編集
2019/04/11 03:49
2019/04/11 03:52
2019/04/11 03:54
2019/04/11 03:55
2019/04/11 03:58 編集
2019/04/11 04:07 編集