PHP, PDO, форма, обновление класса пользователя не работает, как ожидалось - PullRequest
0 голосов
/ 28 августа 2018

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

Есть идеи?

Это мой файл user.class.php.

public function userUpdate($id, $fname, $lname) {
  $pdo = $this->pdo;
  if (isset($id) && !empty($id) && isset($fname) && !empty($fname) && isset($lname) && !empty($lname)) {
  $stmt = $pdo->prepare('UPDATE users SET fname = ?, lname = ? WHERE id = ?');
  if ($stmt->execute([$id, $fname, $lname])) {
    $this->msg = 'User name was successfully updated!';
    return true;
  }
  else
  {
    $this->msg = 'User name failed to update!';
    return false;
  }
  }
  else
  {
    $this->msg = 'Data lost or not set!';
    return false;
  }
}

Это мой файл update.func.php.

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  if (isset($_POST['uid']) && !empty($_POST['uid']) && 
    isset($_POST['fname']) && !empty($_POST['fname']) && isset($_POST['lname']) && !empty($_POST['lname'])) {
    $id = filter_input(INPUT_POST, 'uid', FILTER_DEFAULT);
    $fname = filter_input(INPUT_POST, 'fname', FILTER_SANITIZE_STRING);
    $lname = filter_input(INPUT_POST, 'lname', FILTER_SANITIZE_STRING);
    if ($user->userUpdate($id, $fname, $lname)) {
      header('Location: https://domain/update.php?result=pass&message=' . $user->getMsg());
      exit;
    }
    else
    {
      header('Location: https://domain/update.php?result=fail&message=' . $user->getMsg());
      exit;
    }
  }
  else
  {
      header('Location: https://domain/update.php?result=fail&message=' . $user->getMsg());
  }
}
else
{
    header('Location: https://domain/update.php?result=fail&message=' . $user->getMsg());
}

1 Ответ

0 голосов
/ 28 августа 2018

Вы передаете параметры в неправильном порядке при выполнении здесь:

  $stmt = $pdo->prepare('UPDATE users SET fname = ?, lname = ? WHERE id = ?');
  if ($stmt->execute([$id, $fname, $lname])) {

Вам нужно передать их как:

  $stmt = $pdo->prepare('UPDATE users SET fname = ?, lname = ? WHERE id = ?');
  if ($stmt->execute([$fname, $lname, $id])) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...