これまでで一番「情けなかったとき」はいつですか?

htmlでかんたんな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

どの部分が間違っているのかわからず、教えていただけないでしょうか。
パスワードが間違っている場合は正しくエラーをかえせています。
既存のユーザ名とパスワードの組み合わせ及び新規の組み合わせのときに上記のエラーメッセージに遷移する状態です。
ログイン及びメインページは別にコードを作成してあります。

<!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>

質問者からの補足コメント

  • うーん・・・

    ご回答ありがとうございます。
    なんとなく26、7行目で何かあるらしいのは分かりました。
    宜しければ、どのように修正するべきか教えていただけないでしょうか。

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/11/14 06:34
  • うーん・・・

    お手数をおかけしますがエラーを解消するためにどこをどのように書き換えれば良いか教えていただきたいです。

      補足日時:2023/11/14 07:06

A 回答 (1件)

> Undefined array key "username" ... on line 26


とあるので 26 行目の連想配列の使い方が間違っています

> SQLSTATE ... parameter was not defined ... on line 27
とあるので 27 行目で実行する SQL 文にはパラメーター定義が不足しています
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報