Что не так с запросом? Он генерирует синтаксическую ошибку.
Если вы хотите предотвратить дублирование, используйте уникальное ограничение в таблице:
ALTER TABLE customers ADD CONSTRAINT unq_customers_username UNIQUE (username);
Затем, если вы попытаетесь вставить повторяющееся значение, используя
INSERT INTO `customers`(`username`, `password`)
VALUES (:username, :password);
Вы получите сообщение об ошибке нарушения ограничения.
Часто в этом случае вы действительно хотите обновить пароль в существующей строке. Вы можете сделать это с помощью расширения MySQL ON DUPLICATE KEY UPDATE
:
INSERT INTO `customers`(`username`, `password`)
VALUES (:username, :password)
ON DUPLICATE KEY UPDATE password = :password;