2014-02-09 55 views
0

我使用的MySQL的「唯一」屬性的用戶名和電子郵件列重疊。我如何知道這兩個(用戶名和電子郵件)中的哪一個重疊。我想根據重疊值回顯錯誤消息。重疊電子郵件和/或用戶名的不同錯誤消息。如何知道哪些值在庫MySQLi(使用UNIQUE)

注:我在使用PHP。

+0

給我們看一些代碼。 –

+0

基於數據庫響應返回錯誤消息可能非常不可靠。最好的辦法是查詢你想要保存的值並在保存前進行驗證。我想用一些框架爲你做這件事是最好的辦法,試着尋找一個PHP的ORM。 – eduardohl

+0

我沒有爲此寫任何特定的代碼。我試圖將用戶插入數據庫。例如,我寫了一些代碼;分鐘密碼的長度,檢查單選按鈕是否被選中。最後,我添加一個'else'來顯示有錯誤,並且它工作正常,如果我嘗試插入一個用戶名稱在數據庫中已經存在的用戶,它給了我在「其他」中寫的錯誤質量。我想知道是否有辦法知道這兩者中哪一個重疊。 – ctarimli

回答

0

聽起來好像您在updateinsert上發生了錯誤。

如果你想指定你自己的錯誤信息,那麼你需要在表上創建一個觸發器並自己檢查。 (或者,通過存儲過程,你可以在存儲過程中檢查並設置錯誤信息做數據修改。)的signal語法允許你從觸發回你自己的錯誤信息,所以它可以包含任何你喜歡。

您可以閱讀更多關於signalhere

+0

謝謝,我正在閱讀它。 – ctarimli

+1

fyi,'SIGNAL'從'5.5'開始可用 –

0

您可以首先查詢該用戶名或電子郵件的數據庫,如果得到結果,請檢查結果集以查看哪一個與發佈的值相同。

$query = "SELECT * FROM userTable WHERE username = '" . $_POST['username'] . "' OR email = '" . $_POST['email'] . "' 

如果該查詢返回任何結果,獲取該行與mysqli_fetch_assoc與$ _ POST值進行比較的用戶名和電子郵件的值。如果它不返回任何值,則可以運行插入/更新查詢。

+0

我曾經遵循這個方法,這個工作原理沒有將列標記爲唯一。但是,在mysql中使用獨特的是什麼呢?必須有辦法知道哪些重疊。不管怎麼說,還是要謝謝你。 – ctarimli

相關問題