PHPで、mysqlを使ってログイン処理を作ろうとすると、以下のようなエラーが出ます。
2031 No data supplied for parameters in prepared statement
PHPのバージョンは8.0.13です。
初心者で何を言えばいいかわからずすみません。
何か必要な情報があればお手数ですが教えてください。
コードは以下のものです。
dbc.php
1<?php 2 3 4 5 6$dsn = "mysql:host=localhost;dbname=test;charset=utf8;"; 7 8$user = "syumai6842"; 9 10$pass = "kana@7531"; 11 12try { 13 $dbh = new PDO($dsn, $user, $pass, [ 14 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 15 PDO::ATTR_EMULATE_PREPARES => false, 16 ]); 17} catch (PDOException $e) { 18 echo '接続失敗', $e->getMessage(); 19 exit(); 20}; 21 22?>
createaccountpage
1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>Document</title> 8 <link rel="styleshhet" href="../css/default.css"> 9 <style type="text/css"> 10 @import url("../css/header.css"); 11 @import url("../css/default.css"); 12 </style> 13</head> 14<body> 15<div style="margin: auto;width:30rem;margin-top:5rem; border:2px solid gainsboro;"> 16 <p style="text-align:center; font-size: 50px;font-weight:bolder;">アカウント作成</p> 17 18 <form method="post" style="margin: auto; text-align:center;"> 19 <p>アカウント名</p> 20 <input type="text" name="maname" value="" size="20rem"> 21 <br> 22 <br> 23 <p>パスワード</p> 24 <input type="password" name="mapass" value="" size="20rem"> 25 <br> 26 <br> 27 <br> 28 <input type="submit" name="mabtn" value="作成" style="width:5rem;height:2rem;"> 29 <br> 30 <?php 31 if(isset($_POST["mabtn"])){ 32 require_once("./createaccountlogic.php"); 33 } 34 ?> 35 <br> 36 <br> 37 <a href="./home.php">アカウントログイン</a> 38 <br> 39 <br> 40 </form> 41 </div> 42</body> 43</html>
createaccountlogic.php
1<?php 2 try { 3 $name = "aaaaa"; 4 $name = $_POST["maname"]; 5 $pass = hash("sha256", $_POST["mapass"]); 6 require_once("./dbc.php"); 7 8 $sth = $dbh -> prepare("SELECT name, COUNT(*) FROM accounts WHERE name = :name GROUP BY name;"); 9 $sth -> bindValue(':name', $name, PDO::PARAM_STR); 10 echo $name; 11 12 $isused = $sth -> execute(); 13 14 echo $isused; 15 16 17 18 switch ($isused) { 19 case 1: 20 echo"<script type=\"text/javascript\">alert(\"アカウントを作成します!!\");</script>"; 21 $sql = "INSERT INTO `accounts` (`id`, `name`, `pass`) VALUES (NULL, :name, :pass );"; 22 $sth = $dbh -> prepare($sql); 23 $sth -> bindValue(':name',$name,PDO::PARAM_STR); 24 $sth -> bindValue(':pass',$pass,PDO::PARAM_STR); 25 $dbh->query($sql, 2); 26 header("Location:./home.php"); 27 $sql = null; 28 # code... 29 break; 30 31 default: 32 echo"<script type=\"text/javascript\">alert(\"既に使用されています!!\");</script>"; 33 # code... 34 break; 35 } 36 37 } catch (PDOException $e) { 38 print"エラーが発生しました。".$e -> getMessage(); 39 exit(); 40 } 41?> 42
どうかよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー