#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";