我有一个简单的数据库,其中包含一个包含我游戏的所有用户的表。我希望用户名和电子邮件地址是唯一的,因此将它们设置为具有唯一索引。
每当新用户注册游戏时,都会执行此语句:
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 IGNORE 以避免重复的用户名或电子邮件地址。但我想做的是为用户生成一些有用的反馈; “这个名字已经被占用了。”或“电子邮件已在使用”。上面的代码是我认为可行的任意示例。我怎样才能实现这些目标?
最佳答案
我认为最简单的解决方案是运行先前的查询来检查该名称是否已存在。注册过程并不是一个非常苛刻的过程,因为每个用户只需注册一次。因此,我认为尝试仅在一个查询中执行此操作是不值得的。此外,如果您愿意,可以通过单独的“checkUserName”过程在所有注册表单发送到服务器之前对其进行检查。例如,一旦用户写完他想要的用户名。
关于MySql Unique Index如何生成合适的Response?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36713692/