PHPで、mysqlを使ってログイン処理を作ろうとすると、以下のようなエラーが出ます。
2031 No data supplied for parameters in prepared statement
PHPのバージョンは8.0.13です。
初心者で何を言えばいいかわからずすみません。
何か必要な情報があればお手数ですが教えてください。
コードは以下のものです。
dbc.php
<?php $dsn = "mysql:host=localhost;dbname=test;charset=utf8;"; $user = "syumai6842"; $pass = "kana@7531"; try { $dbh = new PDO($dsn, $user, $pass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false, ]); } catch (PDOException $e) { echo '接続失敗', $e->getMessage(); exit(); }; ?>
createaccountpage
<!DOCTYPE html> <html lang="en"> <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>Document</title> <link rel="styleshhet" href="../css/default.css"> <style type="text/css"> @import url("../css/header.css"); @import url("../css/default.css"); </style> </head> <body> <div style="margin: auto;width:30rem;margin-top:5rem; border:2px solid gainsboro;"> <p style="text-align:center; font-size: 50px;font-weight:bolder;">アカウント作成</p> <form method="post" style="margin: auto; text-align:center;"> <p>アカウント名</p> <input type="text" name="maname" value="" size="20rem"> <br> <br> <p>パスワード</p> <input type="password" name="mapass" value="" size="20rem"> <br> <br> <br> <input type="submit" name="mabtn" value="作成" style="width:5rem;height:2rem;"> <br> <?php if(isset($_POST["mabtn"])){ require_once("./createaccountlogic.php"); } ?> <br> <br> <a href="./home.php">アカウントログイン</a> <br> <br> </form> </div> </body> </html>
createaccountlogic.php
<?php try { $name = "aaaaa"; $name = $_POST["maname"]; $pass = hash("sha256", $_POST["mapass"]); require_once("./dbc.php"); $sth = $dbh -> prepare("SELECT name, COUNT(*) FROM accounts WHERE name = :name GROUP BY name;"); $sth -> bindValue(':name', $name, PDO::PARAM_STR); echo $name; $isused = $sth -> execute(); echo $isused; switch ($isused) { case 1: echo"<script type=\"text/javascript\">alert(\"アカウントを作成します!!\");</script>"; $sql = "INSERT INTO `accounts` (`id`, `name`, `pass`) VALUES (NULL, :name, :pass );"; $sth = $dbh -> prepare($sql); $sth -> bindValue(':name',$name,PDO::PARAM_STR); $sth -> bindValue(':pass',$pass,PDO::PARAM_STR); $dbh->query($sql, 2); header("Location:./home.php"); $sql = null; # code... break; default: echo"<script type=\"text/javascript\">alert(\"既に使用されています!!\");</script>"; # code... break; } } catch (PDOException $e) { print"エラーが発生しました。".$e -> getMessage(); exit(); } ?>
どうかよろしくお願いします。
まだ回答がついていません
会員登録して回答してみよう