Задать вопрос
@Palwanchik

Зачем login повторяется в phpmyadmin?

Здраствуйте, я кодировал форум вход и регистрация. Он работает без ошибки, но login повторяется в phpmyadmin.

6742b92e6f3d2538296791.png
  • Вопрос задан
  • 130 просмотров
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 2
У тебя отсутствует уникальное ограничение для этого поля.
Есть запрос на установку такого ограничения:
ALTER TABLE users ADD UNIQUE (login);

Так же, чтобы удалить имеющиеся сейчас дубли:
DELETE FROM users
WHERE id NOT IN (
    SELECT MIN(id)
    FROM users
    GROUP BY login
);


В обработке регистрации должна проверка на наличие существующего логина в базе данных перед добавлением
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
1. Удаляем дубли:
DELETE u.*
  FROM users AS u
  JOIN users AS d
    ON d.login = u.login AND d.id < u.id;

2. Ставим уникальный индекс на login, чтобы добавить дубль было невозможно даже при ошибке в коде:
ALTER TABLE users ADD UNIQUE (login);
Переписываем код.
3 (необязательно). Прежде, чем добавлять логин в таблицу, делаем запрос на наличие в ней такого логина и, если он есть, то возвращаем сообщение, что такой логин уже есть.
4. Делаем вставку и, если она не удалась, то проверяем ошибку. Если это ошибка 1062 Duplicate entry, то какой-то поток успел вставить такой логин раньше и, опять же, возвращаем сообщение, что такой логин уже есть.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы