2013-03-26 61 views
-2

我正在創建一個edit_setting頁面,允許用戶更新他們的配置文件。我能夠更新每個字段,但電子郵件地址字段給了我一個錯誤。php mysql更新查詢

重複項重點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 2013-03-26 20:51:18

+0

你應該真的嘗試使用mysqli它更容易,你應該聽那傢伙在那裏^^^ – 2013-03-26 20:53:15

+0

email_address被設置爲一個獨特的索引,檢查你的代碼 – 2013-03-26 20:54:55

回答

1

這意味着有上email_address場被禁止多個記錄單的e-mail地址約束。如果它是主鍵,那麼您需要評估哪個字段最能唯一地標識記錄(代理鍵)。如果它是一個唯一的約束,那麼你可以刪除約束。

+0

@波蘭王子,所以你的意思是我必須使它不唯一?所以如果我想使它獨一無二,我想用戶更新他們的電子郵件如何做到這一點?或者我不能? – user2205838 2013-03-26 20:56:04

+0

@ user2205838'unique'意味着它只能存在一次。我認爲你應該做的是檢查電子郵件在應用程序端不存在並保持約束。 – Kermit 2013-03-26 20:58:50

0

EMAIL_ADDRESS獨特和你試圖插入重複條目

+0

所以你的意思是我必須使它不唯一?所以如果我想使它獨一無二,我想用戶更新他們的電子郵件如何做到這一點?或者我不能? – user2205838 2013-03-26 20:59:50

+0

我只是試圖幫助找到問題所在。 – 2013-03-26 21:21:37

0

這聽起來像你有EMAIL_ADDRESS一個獨特的密鑰。如果這是MySQL的數據衛生觀點所期望的,那麼除了調整您的代碼以正確處理這些錯誤情況之外,您無能爲力。

如果不希望電子郵件地址對於表中的每個記錄都是唯一的,則可以將索引類型更改爲不唯一。

+0

所以告訴我,如果我不明白你說什麼..最好不要在帳戶設置的電子郵件字段允許人們更新它? – user2205838 2013-03-26 21:01:30

+0

我不是說任何事情都是可取的。您必須確定每個用戶記錄是否具有唯一的電子郵件地址對於您的應用程序是否重要。如果您需要唯一性,那麼您的應用程序需要了解這一點,並瞭解如果用戶嘗試將其電子郵件地址更新爲表中已存在的電子郵件地址,則更新將失敗。如果您不需要唯一性,則更改索引​​以允許重複值。 – 2013-03-26 21:05:13