質問: "いずれか間違ってるよ"が表示される 両方空だと →whileの所でひっかかります 名前が空だと →いずれか間違ってるよが表示されます passwordが空だと →whileでひっかかります パスワードの扱い方がミスなんだと思うのですが、、、、 ``` 名前 パス ```
回答: 同じ「name」を持つ人は、最後の人が有効になってしまいますが、いいんでしょうかね? とりあえず、nameを探しましょう。 ``` $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $stmt = $dbh->prepare("SELECT * FROM staff WHERE name=?"); $stmt->bindParam(1, $_POST['name'], PDO::PARAM_STR); $stmt->execute(); ``` さらに、 ``` // Loginボタンが押されたら if (isset($_POST['Login'])) { // エラー if (empty($_POST['name'])) { $errorMessage = "名前が無いです"; } else if (empty($_POST['password'])) { $errorMessage = "パスワードが無いです"; } // エラーが無かったら if (!empty($_POST['name']) && !empty($_POST['password'])) { ``` ここは、 ``` // Loginボタンが押されたら if (isset($_POST['Login'])) { $errorMessage = ''; // エラー if (empty($_POST['name'])) { $errorMessage = "名前が無いです"; } else if (empty($_POST['password'])) { $errorMessage = "パスワードが無いです"; } // エラーが無かったら if (empty($errorMessage)) { ``` としましょう。変数は必ず初期化するように癖をつけてください。 また、同じような条件文が出てくる場合は、他と統合できないか、もっと簡単な方法はないか探しましょう。