MySQL не может вставить / обновить новые значения в таблицу

У меня есть система входа в систему на моем сайте, и я пытаюсь создать сброс пароля. У меня нет проблем с регистрацией или кодом входа, но код смены пароля не работает. Вот два примера, которые я попробовал (фактический код)

<?php
require_once("config.php");
session_start();
if(isset($_POST['submit'])) {

include_once 'config.php';

$password = mysqli_real_escape_string($con, $_POST['password']);
$password1 = mysqli_real_escape_string($con, $_POST['uc_pass1']);
$password2 = mysqli_real_escape_string($con, $_POST['uc_pass2']);
$uid = $_SESSION['s_id'];

if ($password1 != $password2 || empty($password1) || empty($password2)) {
header("Location: ../user-conf.php?pass=notmatching");
exit();
} else {
$sql = "SELECT password FROM userdb WHERE username='$uid'";
$result = mysqli_query($con, $sql);
$resultCheck = mysqli_num_rows($result);

if (!$resultCheck > 0) {
header("Location: ../user-conf.php?error");
exit();
} else {
$hashedPwdCheck = password_verify($password, $_SESSION['s_pw']);
if ($hashedPwdCheck == false) {
header("Location: ../user-conf.php?error");
exit();
} elseif ($hashedPwdCheck == true) {
$hashedPwd2 = password_hash($password1, PASSWORD_DEFAULT);
$sql2 = "INSERT INTO userdb (password) VALUES($hashedPwd2) WHERE username=$uid";
mysqli_query($con, $sql2);
header("Location: ../user-conf.php?pass=successfull");
exit();
}
}
}
} else {
header("Location: ../login.php?nologon");
}
?>

А другой ниже.

<?php
require_once("config.php");
session_start();
if(isset($_POST['submit'])) {

include_once 'config.php';

$password = mysqli_real_escape_string($con, $_POST['password']);
$password1 = mysqli_real_escape_string($con, $_POST['uc_pass1']);
$password2 = mysqli_real_escape_string($con, $_POST['uc_pass2']);
$uid = $_SESSION['s_id'];

if ($password1 != $password2 || empty($password1) || empty($password2)) {
header("Location: ../user-conf.php?pass=notmatching");
exit();
} else {

$hashedPwdCheck = password_verify($password, $_SESSION['s_pw']);
if ($hashedPwdCheck == false) {
header("Location: ../user-conf.php?error");
exit();
} elseif ($hashedPwdCheck == true) {
$hashedPwd = password_hash($password1, PASSWORD_DEFAULT);
$sql = "INSERT INTO userdb (password) VALUES($hashedPwd) WHERE username=$uid";
mysqli_query($con, $sql);
header("Location: ../user-conf.php?pass=successfull");
exit();
}
}
} else {
header("Location: ../login.php?nologon");
}
?>

Я также попробовал с синтаксисом ОБНОВЛЕНИЕ. но, похоже, он не изменил старый пароль на новый. Было бы хорошо узнать, что я сделал не так, так что если вы знаете, пожалуйста, скажите мне, и это будет оценено! 🙂

0

Решение

99% уверены, что:

"INSERT INTO userdb (password) VALUES($hashedPwd2) WHERE username=$uid"

Должно быть:

"UPDATE userdb SET password = '$hashedPwd2' WHERE username='$uid'"

Вам не хватает кавычек вокруг вашей переменной PHP и INSERT должен быть UPDATE,

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector