Если дубликат ключа, как определить, какой первичный ключ (мульти) вызвал его - PullRequest
1 голос
/ 03 ноября 2010

Я создаю простое приложение для регистрации на моем сайте с базой данных пользователей. Я использую PHP и MySQL. Я хочу взять в "имя пользователя" и "адрес электронной почты". Оба являются первичными ключами в моей базе данных. Я явно не хочу того же самого. Как я могу предоставить отзыв пользователю, если а) имя пользователя уже занято и б) электронная почта уже используется. Я знаю, что могу сделать запрос на обоих, но я подумал, что это может быть избыточно (2 поиска и вставка). Есть ли способ получить обратную связь от MySQL, если я попытаюсь вставить дубликат ключа. Например, это поле, которое не удалось вставить. Если нет, каков наилучший способ / практика для этого?

Спасибо всем.

1 Ответ

1 голос
/ 03 ноября 2010

Лучшее, что вы можете сделать, это выполнить следующее:

$result = mysql_query( "insert into yourtable (`username`, `email`) values ('usernamesubmitted','emailsubmitted')");
if (!$result) {
      die('Invalid query: ' . mysql_error());
}

Здесь предполагается, что запрос на вставку завершится неудачно, если одно из полей, которые нужно вставить, является первичным ключом и дублируется. В этом случае .... выведите сообщение - сообщение будет содержать максимальную информацию, которую вы можете получить в этой ситуации, затем вы можете обработать ее соответствующим образом

...