2013-03-26 6 views
-2

Я создаю страницу edit_setting, которая позволяет пользователям обновлять свои профили. Я смог обновить каждое поле, но поле для адреса электронной почты дало мне ошибку. запись DUPLICATEphp mysql update query

для ключа EMAIL_ADDRESS

Как решить эту ошибку? Это часть кода, которая обрабатывает поле электронной почты. Если вам нужен дополнительный код, дайте мне знать.

account_setting.php

 $edit_query = mysql_query("UPDATE user SET first_name= '$fname', last_name= '$lname', address= '$country', email_address = '$email', specialization_name= '$spec', interest = '$aboutme' WHERE user_id = '$userid'") or die(mysql_error()); 


<td><label for="email"><span class="Fields">Email Address</span></label></td> 
    <td><input type="text" name="email" placeholder="Email_Address" value="<?php echo $email; ?>" /></td> 
+3

[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **) (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (http://j.mp/XqV7Lp). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. – Kermit

+0

вы действительно должны попытаться использовать mysqli еще проще, вы должны прослушать этого парня там ^^^ –

+0

email_address задан как уникальный индекс, проверьте свой код –

ответ

1

Это означает, что существует ограничение на email_address поле, запрещающие несколько записей для одного адреса электронной почты. Если это первичный ключ, вам необходимо оценить, какое поле наилучшим образом идентифицирует запись (суррогатный ключ). Если это уникальное ограничение, вы можете отказаться от ограничения.

+0

@ Польский принц, поэтому вы имеете в виду, что я должен сделать его не уникальным? поэтому, если я хочу сделать его уникальным, и я хочу, чтобы пользователи обновили электронную почту, как это сделать? или я не могу? – user2205838

+0

@ user2205838 'unique' означает, что он может существовать только один раз. Я думаю, что вы должны делать это, проверяя, что электронная почта не существует на стороне приложения и поддерживает ограничение. – Kermit

0

email_address поле уникальный и вы пытаетесь вставить дубликат записи

+0

, значит, вы должны сделать это не уникальным? поэтому, если я хочу сделать его уникальным, и я хочу, чтобы пользователи обновили электронную почту, как это сделать? или я не могу? – user2205838

+0

Я только пытался помочь найти проблему. –

0

Это звучит, как у вас есть уникальный ключ на EMAIL_ADDRESS. Если это то, что желательно с точки зрения санитарии данных в MySQL, то вы действительно ничего не можете сделать, кроме как настроить свой код для правильной обработки таких ошибок.

Если нежелательно, чтобы адрес электронной почты был уникальным для каждой записи в вашей таблице, вы можете изменить тип индекса, чтобы он не был уникальным.

+0

так скажите мне, если я не понял, что вы говорите. Предпочтительно не помещать поле электронной почты в настройках учетной записи, чтобы люди могли его обновлять? – user2205838

+0

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