gpt4 book ai didi

php - 卡住无效参数编号 : number of bound variables does not match number of tokens

转载 作者:可可西里 更新时间:2023-11-01 08:04:49 25 4
gpt4 key购买 nike

我已经被困在这个问题上很长一段时间了,我似乎找不到适合我情况的另一个答案。

在我的用户类中:

public function register($uFirstName,$uLastName,$uCompany,$uEmail,$uPassword,$uAccess)
{
try
{
$newPassword = password_hash($uPassword, PASSWORD_DEFAULT);

$stmt = $this->db->prepare("INSERT INTO users(FirstName,LastName,Company,Email,Password,Access) VALUES (:uFirstName,uLastName,uCompany,uEmail,uPassword,uAccess)");

$stmt->bindparam("uFirstName", $uFirstName);
$stmt->bindparam("uLastName", $uLastName);
$stmt->bindparam("uCompany", $uCompany);
$stmt->bindparam("uEmail", $uEmail);
$stmt->bindparam("uPassword", $uPassword);
$stmt->bindparam("uAccess", $uAccess);

$stmt->execute();

return $stmt;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}

在我的表单页面中:

if(isset($_POST['btn-signup']))
{
$uFirstName = trim($_POST['regFirstName']);
$uLastName = trim($_POST['regLastName']);
$uCompany = trim($_POST['regCompany']);
$uEmail = trim($_POST['regEmail']);
$uEmailVerify = trim($_POST['regEmailVerify']);
$uPassword = trim($_POST['regPassword']);
$uAccess = 0;

if ($uEmail != $uEmailVerify) {
$error = "Emails Don't Match";
}
else if (!filter_var($uEmail, FILTER_VALIDATE_EMAIL)) {
$error = "Please Enter a Valid Email";
}
else if (strlen($uPassword) < 6) {
$error = "Password must be at least 6 characters";
}
else {
try
{
$stmt = $DB_con->prepare("SELECT Email FROM users WHERE Email=:uEmail");
$stmt->execute(array(':uEmail' => $uEmail));

$row = $stmt->fetch(PDO::FETCH_ASSOC);

if ($row['Email'] == $uEmail) {
$error = "Email is Already Registered, Log In Instead";
}
else {
if ($user->register($uFirstName,$uLastName,$uCompany,$uEmail,$uPassword,$uAccess)) {
$user->redirect('http://facebook.com');
}
}
}
catch (PDOException $e)
{
echo $e->getMessage();
}
}
}

最佳答案

这里看看你的值(value)观

VALUES (:uFirstName,uLastName,uCompany,uEmail,uPassword,uAccess)

你只绑定(bind)了第一个,没有绑定(bind)其他的。


编辑:

我看到你没有使用 password_verify()在你的第二段代码中,但只检查电子邮件是否存在。

如果您对此有任何疑问,请访问 ircmaxell 的答案之一 https://stackoverflow.com/a/29778421/1415724

摘自该答案:

登录时:

$sql = "SELECT * FROM users WHERE username = ?";
$stmt = $dbh->prepare($sql);
$result = $stmt->execute([$_POST['username']]);
$users = $result->fetchAll();
if (isset($users[0]) {
if (password_verify($_POST['password'], $users[0]->password) {
// valid login
} else {
// invalid password
}
} else {
// invalid username
}

关于php - 卡住无效参数编号 : number of bound variables does not match number of tokens,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34725509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com