plsはpdoおよびmysqlを使用してログインおよび登録システムを作成しようとしています。このエラーは私が{"text":SQLSTATE [HY093]:無効なパラメータ番号:バインドされた変数の数がトークンの数と一致しません}} <
<?php
class userClass
{
\t
/* User Login */
public function userLogin($email,$password)
{
$db = getDB();
$hash_password= hash('sha256', $password);
$stmt = $db->prepare("SELECT uid FROM users WHERE email=:email AND password=:hash_password");
$stmt->bindParam("email", $email,PDO::PARAM_STR) ;
$stmt->bindParam("hash_password", $hash_password,PDO::PARAM_STR) ;
$stmt->execute();
$count=$stmt->rowCount();
$data=$stmt->fetch(PDO::FETCH_OBJ);
$db = null;
if($count)
{
$_SESSION['uid']=$data->uid;
return true;
}
else
{
return false;
}
}
/* User Registration */
public function userRegistration($email,$password,$fname,$lname,$dob,$sex,$country,$state_resd,$phone_no,$profile_pic)
{
try{
$db = getDB();
$st = $db->prepare("SELECT uid FROM users WHERE email=:email, password=:hash_password, fname=:fname, lname=:lname, dob=:dob, sex=:sex, country=:country, state_resd=:state_resd, phone_no=:phone_no, profile_pic=:profile_pic");
/**$st->bindParam("username", $username,PDO::PARAM_STR);**/
$st->bindParam("email", $email,PDO::PARAM_STR);
$st->execute();
$count=$st->rowCount();
if($count<1)
{
$stmt = $db->prepare("INSERT INTO users(email,password,fname,lname,dob,sex,country,state_resd,phone_no,profile_pic) VALUES (:email,:hash_password:fname,:lname,:dob,:sex,:country,:state_resd,:phone_no)");
/**$stmt->bindParam("username", $username,PDO::PARAM_STR) ;**/
$stmt->bindParam("email", $email,PDO::PARAM_STR) ;
\t $hash_password= hash('sha256', $password);
$stmt->bindParam("hash_password", $hash_password,PDO::PARAM_STR) ;
$stmt->bindParam("fname", $fname,PDO::PARAM_STR) ;
\t $stmt->bindParam("lname", $lname,PDO::PARAM_STR) ;
\t $stmt->bindParam("dob", $dob,PDO::PARAM_STR) ;
\t $stmt->bindParam("sex", $sex,PDO::PARAM_STR) ;
\t $stmt->bindParam("country", $country,PDO::PARAM_STR) ;
\t $stmt->bindParam("state_resd", $state_resd,PDO::PARAM_STR) ;
\t $stmt->bindParam("phone_no", $phone_no,PDO::PARAM_STR) ;
\t $stmt->bindParam("profile_pic", $profile_pic,PDO::PARAM_STR) ;
\t
$stmt->execute();
$uid=$db->lastInsertId();
$db = null;
$_SESSION['uid']=$uid;
return true;
}
else
{
$db = null;
return false;
}
}
catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}
/* User Details */
public function userDetails($uid)
{
try{
$db = getDB();
$stmt = $db->prepare("SELECT email FROM users WHERE uid=:uid");
$stmt->bindParam("uid", $uid,PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetch(PDO::FETCH_OBJ);
return $data;
}
catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}
}
?>
と登録ページ
のために...この種のエラーのすべての答えを通して読みが、地雷を是正するように見えるカント... HERESにコード、ポップアップ続けます<?php
include("config.php");
include('class/userClass.php');
$userClass = new userClass();
$errorMsgReg='';
$errorMsgLogin='';
if (!empty($_POST['loginSubmit']))
{
$email=$_POST['email'];
$password=$_POST['password'];
if(strlen(trim($email))>1 && strlen(trim($password))>1)
{
$uid=$userClass->userLogin($email,$password);
if($uid)
{
$url=BASE_URL.'home.php';
header("Location: $url");
}
else
{
$errorMsgLogin="Please check login details.";
}
}
}
if (!empty($_POST['signupSubmit']))
{
\t /**$username=$_POST['usernameReg'];**/
\t
\t $email=$_POST['emailReg'];
\t $password=$_POST['passwordReg'];
$fname=$_POST['fnameReg'];
$lname=$_POST['lnameReg'];
$dob=$_POST['dobReg'];
$sex=$_POST['sexReg'];
$country=$_POST['countryReg'];
$state_resd=$_POST['state_resdReg'];
$phone_no=$_POST['phone_noReg'];
$profile_pic=$_POST['profile_picReg'];
\t /**$username_check = preg_match('~^[A-Za-z0-9_]{3,20}$~i', $username);**/
\t $email_check = preg_match('~^[a-zA-Z0-9._-][email protected][a-zA-Z0-9._-]+\.([a-zA-Z]{2,4})$~i', $email);
\t $password_check = preg_match('~^[[email protected]#$%^&*()_]{6,20}$~i', $password);
\t if($email_check && $password_check && strlen(trim($fname))>0)
\t {
$uid=$userClass->userRegistration($email,$password,$fname,$lname,$dob,$sex,$country,$state_resd,$phone_no,$profile_pic);
if($uid)
{
\t $url=BASE_URL.'home.php';
\t header("Location: $url");
}
else
{
$errorMsgReg="Email already exits.";
}
\t }
}
?>
<!DOCTYPE html>
<html>
<head>
<style>
#container{width: 700px}
#login,#signup{width: 300px; border: 1px solid #d6d7da; padding: 0px 15px 15px 15px; border-radius: 5px;font-family: arial; line-height: 16px;color: #333333; font-size: 14px; background: #ffffff;rgba(200,200,200,0.7) 0 4px 10px -1px}
#login{float:left;}
#signup{float:right;}
h3{color:#365D98}
form label{font-weight: bold;}
form label, form input{display: block;margin-bottom: 5px;width: 90%}
form input{ border: solid 1px #666666;padding: 10px;border: solid 1px #BDC7D8; margin-bottom: 20px}
.button {
background-color: #5fcf80 !important;
border-color: #3ac162 !important;
font-weight: bold;
padding: 12px 15px;
max-width: 300px;
color: #ffffff;
}
.errorMsg{color: #cc0000;margin-bottom: 10px}
</style>
<body>
<div id="container">
<<div id="signup">
<h3>Registration</h3>
<form method="post" action="" name="signup">
<label>Email</label>
<input type="text" name="emailReg" autocomplete="off" />
<label>Password</label>
<input type="password" name="passwordReg" autocomplete="off"/>
<label>First Name</label>
<input type="text" name="fnameReg" autocomplete="off" />
<label>Last Name</label>
<input type="text" name="lnameReg" autocomplete="off" />
<label>Sex</label>
<input type="text" name="sexReg" autocomplete="off" />
<label>Date of Birth</label>
<input type="text" name="dobReg" autocomplete="off" />
<label>Country</label>
<input type="text" name="countryReg" autocomplete="off" />
<label>State of Residence</label>
<input type="text" name="state_resdReg" autocomplete="off" />
<label>Phone Number</label>
<input type="text" name="phone_noReg" autocomplete="off" />
<label>Profile photo</label>
<input type="text" name="profile_picReg" autocomplete="off" />
<!--<label>Username</label>
<input type="text" name="usernameReg" autocomplete="off" />-->
<div class="errorMsg"><?php echo $errorMsgReg; ?></div>
<input type="submit" class="button" name="signupSubmit" value="Create Counter">
<a href="index.php" class="to_register"> Login </a>
</form>
</div>
</div>
</body>
</html>
PLSは自明であるあなたが取得している初心者
はあなたが間違っている...ウルレジスタ機能に一つだけのパラメータを結合しているたくさんあります:)
希望が、私はそこに任意の中括弧を逃さなかったが、あなたが持っている:のようになります。多くのプレースホルダ –
あなたのinsert文も間違っています.. –
ここでPDOの正しい使い方をお読みください:https://phpdelusions.net/pdo –