MySql Unique Index如何生成合适的Response?

标签 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 IGNORE 以避免重复的用户名或电子邮件地址。但我想做的是为用户生成一些有用的反馈; “这个名字已经被占用了。”或“电子邮件已在使用”。上面的代码是我认为可行的任意示例。我怎样才能实现这些目标?

最佳答案

我认为最简单的解决方案是运行先前的查询来检查该名称是否已存在。注册过程并不是一个非常苛刻的过程,因为每个用户只需注册一次。因此,我认为尝试仅在一个查询中执行此操作是不值得的。此外,如果您愿意,可以通过单独的“checkUserName”过程在所有注册表单发送到服务器之前对其进行检查。例如,一旦用户写完他想要的用户名。

关于MySql Unique Index如何生成合适的Response?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36713692/

相关文章:

MySQL 表不是 UTF-8,即使我指示 Hibernate 使用 UTF-8 创建它们

php - 如何在特定列上动态打印列子标题?

具有 LAST_INSERT_ID() 的 MySQL 函数给出意外结果

mysql - 如果日期存在,如何根据日期从 sql 中获取总和日期?

mysql - 无法更新存储函数/触发器中的表 'example_table',因为它已被调用此存储函数/触发器的语句使用

php - 如何使用 php 以特定顺序显示从 mysql 数据库检索的数据

mysql - 如何将 Apache 指向具有 MySQL 的单独 EC2 实例?

php - CodeIgniter 使用 ActiveRecord 转义查询.. 不希望它

php - 初学者更新记录 PDO 时遇到问题

php - 如果互联网连接丢失,则在本地保存 mysql 值