我有一个名为users
的表格,其中两个字段为login
和name
。
这些字段can not
应重复
当用户要创建新注册时,我已经提出了一种方法来检查name/login
是否已经存在。
但是用户也可以编辑他的login/name
当用户在页面上输入以编辑他的注册数据时,它已经用当前数据填充了字段。
我有3个字段[NAME] [EMAIL] [LOGIN]
。
用户一次只能编辑其中一个或全部...
如何创建一种方法来检查name/login
在尝试编辑时是否已存在?是可能是查询?是select count
login
然后在name
字段?
- UPDATE--
这是我的solution
答案 0 :(得分:1)
您应该将其保留在您正在使用的数据库系统中并处理它可能引发的任何错误。所有数据库系统(Access,Oracle,MS SQL等)都允许您将表字段标记为唯一。这意味着该表只能包含一个带有该值的字段的记录。如果您尝试使用相同的字段添加多个记录,则会引发错误。您的应用程序应捕获该错误并提醒用户。如果你发布了你正在使用的数据库系统,我可以告诉你如何做到这一点。
编辑:
Heres就是一个例子。这使用SqlClient.SqlException异常类。我不确定唯一约束的错误代码是什么,但是我在catch中添加了一个变量,你可以设置一个断点来获取。只需更改if语句以匹配该错误代码:
Try
'your database insert attempt here
Catch ex As SqlClient.SqlException
Dim sqlErrorNumber = ex.ErrorCode
If (sqlErrorNumber = 1) Then
Me.lblWarning.Text = "Please select a unique ID"
Me.lblWarning.Visible = True
Me.lblWarning.ForeColor = Drawing.Color.Red
Me.lblWarning.Font.Bold = True
End If
End Try
在aspx页面中:
<asp:Label ID="lblWarning" runat="server" Visible="false"></asp:Label>
答案 1 :(得分:0)
这里的主要关键是什么?
我建议,在表格中添加新标识列可以解决问题。
您可以根据标识列编辑行。
对于Ex:添加[UserID]字段并使其成为唯一标识列。然后根据where子句中的userid执行更新操作。
答案 2 :(得分:0)
如果您没有列ID或者如果未将用户名列设置为UNIQUE,则可以使用此功能:
function user_exists($ username){
$ username = sanitize($ username); // sanitize
return(mysql_result(mysql_query(“SELECT COUNT(user_name)FROM user_table WHERE username ='$ username'”),0)== 1)? true:false;
}
对于新会员/或者如果当前用户想要编辑他的用户名 如果未注册用户名,则此函数返回false,如果
,则返回true答案 3 :(得分:0)
您应该在数据库中使用唯一字段,尝试使用php或asp和ajax技术捕获字段,以确保字段已填充或不填充您现在键入的信息。