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, то какой-то поток успел вставить такой логин раньше и, опять же, возвращаем сообщение, что такой логин уже есть.