PHP MySQL: обновление профиля пользователя

#php #mysql

#php #mysql

Вопрос:

У меня возникла проблема со страницей моего профиля в моей системе входа. Когда я хочу обновить имя пользователя и адрес электронной почты пользователя, я могу обновить только одно из двух. Посмотрите, где я расставил точки. Если я использую username, это обновляет только имя пользователя, и то же самое касается электронной почты.

Вот мой код:

 function updateProfile($db, $errors)
{       
    $id = $_SESSION['user']['id'];
    $username = mysqli_real_escape_string($db, $_POST['username']);
    $email = mysqli_real_escape_string($db, $_POST['email']);   
    $field_check_query = "SELECT * FROM users WHERE username='$username' email='$email'";
    $result = mysqli_query($db, $field_check_query);
    $field = mysqli_fetch_assoc($result);

    // Checks if username is already taken
    if ($field) { 
        if ($field['username'] === $username) {
          array_push($errors, "Gebruikersnaam is al reeds ingenomen");
        }       
        // Checks if email is already taken
        if ($field['email'] === $email) {
            array_push($errors, "E-mailadres is al reeds ingenomen");
        }
    }

    if (count($errors) == 0) {
        if (isset($_POST['.......'])) {
            $query = "UPDATE users SET username='$username' email='$email' WHERE id=$id";
            mysqli_query($db, $query);
            header('location: profile.php?profileeditedsuccesfully');
            die($query);
        }
    }   
}
  

Комментарии:

1. Вы уверены, что SQL-запросы вообще работают? Мне кажется, что SELECT пропускает AND (или OR ) и UPDATE пропускает запятую.

2. Это сработало, спасибо.

Ответ №1:

Добавить AND туда, где в Select:

 $field_check_query = "SELECT * FROM users WHERE username='$username' AND email='$email'";
  

Добавьте запятую, чтобы разделить пары в обновлении.

 =$query = "UPDATE users SET username='$username', email='$email' WHERE id=$id";