前提
PHPでログイン機能を作成しています。
エラーメッセージは出ていません。
4項目全て打ってもDBに登録されません。
実現したいこと
フォームに記入した情報をDBに登録したい。
該当のソースコード
index.php
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ユーザー登録画面</title> </head> <body> <h2>ユーザー登録フォーム</h2> <form action="register.php" method="POST"> <label for="username">ユーザー名:</label> <input type="text" name="username" id="username"><br> <label for="email">メールアドレス:</label> <input type="email" name="email" id="email"><br> <label for="password">パスワード:</label> <input type="password" name="password" id="password"><br> <label for="password_conf">パスワード確認:</label> <input type="password" name="password_conf" id="password_conf"><br> <input type="submit" value="新規登録"> </form> </body> </html>
register.php
<?php require_once("dbconnect.php"); $err=[]; if(!$username=filter_input(INPUT_POST,"username")){ $err[]="ユーザー名を記入して下さい"; } if(!$email=filter_input(INPUT_POST,"email")){ $err[]="メールアドレスを記入して下さい"; } $password=filter_input(INPUT_POST,"password"); if(!preg_match("/\A[a-z\d]{8,100}+\z/i",$password)){ $err[]="パスワードは英数字8文字以上100文字以下にして下さい"; } $password_conf=filter_input(INPUT_POST,"password_conf"); if($password!==$password_conf){ $err[]="確認用パスワードと異なっています。"; } if(count($err)===0){ $createUser=new CreateUser($_POST); } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ユーザー登録完了画面</title> </head> <body> <?php if(count($err)>0): ?> <?php foreach($err as $e): ?> <p><?php echo $e ?></p> <?php endforeach ?> <?php else: ?> <p>ユーザー登録が完了しました</p> <?php endif ?> <a href="index.php">戻る</a> </body> </html>
dbconnect.php
<?php class CreateUser{ public function _construct($userData){ $sql="insert into users(name,email,password)values(?,?,?)"; $username=$userData["username"]; $email=$userData["email"]; $pass=password_hash($userData["password"],PASSWORD_DEFAULT); try{ $pdo=new PDO("mysql:host=localhost;dbname=portfolio2;charset=utf8","root","パスワードです",[ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES=>false, ]); $stmt= $pdo->prepare($sql); $stmt->bindValue(1,$username); $stmt->bindValue(2,$email); $stmt->bindValue(3,$pass); $stmt->execute(); }catch(PDOException $e){ echo $e->getMessage() . PHP_EOL; exit; }}} ?>
試したこと
スコープの範囲を確認した。
補足情報(FW/ツールのバージョンなど)
XAMPP,VSCodeを使用

まだ回答がついていません
会員登録して回答してみよう