phpでwebページの作成に取り組んでいるのですが、以下のエラー(ログインページに飛ばない)の解消方法がわからず困っています。 Warning: Undefined array key "username" in /home/user01/public_html/12/registry.php on line 26 Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /home/user01/public_html/12/registry.php:27 Stack trace: #0 /home/user01/public_html/12/registry.php(27): PDOStatement->execute() #1 {main} thrown in /home/user01/public_html/12/registry.php on line 27 26、27行目あたりにエラーがある様ですが、どこをどのように書き換えれば処理がうまくいくか教えていただけないでしょうか。 既存のユーザ名とパスワード及び新規の組み合わせを入力したときに上記エラーメッセージに遷移する状態です。 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>掲示板-新規登録</title> <link rel="stylesheet" htef="../stylesheet.css"> </head> <body> <h1>掲示板 新規会員登録</h1> <?php ini_set('display_errors', 'On'); if(isset($_POST["newuname"],$_POST["password"])){ if($_POST["password"] != $_POST["passwordConfirm"]){ echo"パスワードが一致しません"; }else{ $db = "mysql: host=localhost; dbname=webapp; charset=utf8mb4"; $username = "admin"; $password = "mysql"; $pdo = new PDO($db, $username, $password); $stmt = $pdo -> prepare("SELECT * FROM users WHERE username=:newuname"); $stmt -> bindValue(":username", $_POST["username"], PDO::PARAM_STR); $stmt -> execute(); if($stmt -> rowCount() !=0){ echo"そのユーザー名は使われています"; }else{ $stmt = $pdo ->prepare("INSERT INTO users (username,password) VALUES(:newuname,:password);"); $stmt ->bindValue(":newuname", $_POST["newuname"], PDO::PARAM_STR); $stmt ->bindValue(":password", $_POST["password"], PDO::PARAM_STR); $stmt -> execute(); header("Location: ./login.php"); exit; } } } ?> <form actcion="" method="POST"> <table class="registry"> <tr> <td>ユーザー名</td> <td><input type="text" name="newuname"></td> </tr> <tr> <td>パスワード</td> <td><input type="password" name="password"></td> </tr> <tr> <td>パスワード(確認用)</td> <td><input type="password" name="passwordConfirm"></td> </tr> </table> <div class="registry"> <input type="submit" class="registry" value="登録"> </div> </form> </body> </html>
PHP