2016-04-19 19 views
0

我有一個簡單的數據庫,其中包含我的遊戲的所有用戶的表。我希望用戶名和電子郵件地址是唯一的,所以設置它們有唯一的索引。MySql獨特索引如何生成適當的響應?

只要爲遊戲的新用戶註冊,則執行該語句:

tmpQUERY = "INSERT INTO vertix_users (user_name, user_email, user_pass) " + 
    "VALUES (" + mysql.escape(userName) + 
    ", " + mysql.escape(userEmail) + 
    ", " + mysql.escape(userPass) + ") " + 
    "ON DUPLICATE KEY " + 
    "RETURN 'This username already exists'"; 

我可以做一個簡單的INSERT忽略以避免重複的用戶名或電子郵件地址。但是我想要做的是爲用戶產生一些有用的反饋; 「這個名字已被採納。」或「電子郵件已在使用中」。上面的代碼是我認爲可以工作的一個任意例子。我該如何實現這些目標?

+0

您通常會在您的應用程序中執行此操作,而不是數據庫。 –

+0

該查詢從Node.js服務器執行。你什麼意思?應用程序是否會提出幾個請求,以查看名稱/電子郵件是否已存在? –

+0

在INSERT IGNORE的節點中使用te affecetd行,如果> 0回顯消息http://stackoverflow.com/questions/16199842/find-number-of-rows-in-returned-mysql-result-nodejs – Mihai

回答

1

我認爲最簡單的解決方案是運行先前的查詢來檢查名稱是否已經存在。註冊過程不是一個非常苛刻的過程,因爲每個用戶只註冊一次。所以我認爲只用一個查詢就可以做到這一點是不值得的。此外,通過單獨的「checkUserName」進程,您可以在所有註冊表單發送到服務器之前進行檢查。例如,一旦用戶完成寫他想要的用戶名。