В моей таблице четыре поля, в которых два поля уникальны.
Это имя пользователя и адрес электронной почты, например.
Люди регистрируются в передней части.
Я динамически отображаю результат их регистрации с помощью ajax.
Я делаю один запрос на вставку.
И если возникает ошибка, тогда я использую номер ошибки, чтобы определить, является ли она 1062 (повторяющаяся запись) или 1064 (ошибка строки запроса), в противном случае пользователь успешно зарегистрировался.
Если пользователь не может быть зарегистрирован, я покажу причину в удобной для пользователя форме.
Если есть дубликаты, я должен показать, что имя пользователя уже существует или электронная почта уже существует.
Суть в том, что я не хочу использовать запрос на выборку, чтобы узнать, существует ли уже имя пользователя или адрес электронной почты, а если нет, выполнить запрос на вставку.
Если я делаю так, как описано выше, необходимо выполнить два запроса.
Я хочу выполнить только один запрос, и с помощью номера ошибки и сообщения об ошибке я хочу точно отобразить пользователю тип ошибки.
Теперь проблема с дублированием.
Я обнаружил, что это дубликат, и у меня есть строка ошибки, как это
Повторяющаяся запись test@gest.com для
ключ 'электронная почта' или повторяющаяся запись
'проверка' для ключа 'имя пользователя'
Я подумал об использовании strpos для поиска имени поля, чтобы я мог показать пользователю, что электронная почта уже существует или имя пользователя уже существует.
но на некоторых серверах я получаю вот так
Повторяющаяся запись test@gest.com для
ключ 2 "или дублирующая запись" тестирование "
для ключа 3
в этом случае мне нужно сделать регулярное выражение для извлечения последней части, и если это строка, я сделаю strcmp, чтобы определить, какое поле является дубликатом, и я соответственно выведу сообщение об ошибке пользователю, или это число мне нужно простой оператор switch, чтобы определить, какое поле имеет дубликат.
**
Так есть ли другой способ получить который
поле дублируется, если есть больше
уникальные поля в таблице.
**
Или, если нет, тогда я просто хочу поставить этот вопрос перед умом людей, чтобы, если они уже сделали уловку для этого, они могли бы поделиться здесь, чтобы люди, как я, могли получить выгоду.
Спасибо.