1

我有一个名为的表users,其中两个字段是loginname
这些字段can not是重复的。
当用户要创建一个新的注册时,我已经做了一个方法来检查它是否name/login已经存在。
但用户也可以编辑他的login/name.
当用户进入页面编辑他的注册数据时,它已经用当前数据填充了这些字段。
我有 3 个字段[NAME] [EMAIL] [LOGIN]
用户一次只能编辑其中一个或全部... 当他尝试编辑它时
,我如何创建一个方法来检查它是否已经存在?也许是一个查询?A就那么上场? name/login

select countloginname

--更新--
这是我的解决方案

4

4 回答 4

1

你应该把它留给你正在使用的数据库系统,并处理它可能抛出的任何错误。所有数据库系统(Access、Oracle、MS SQL 等)都允许您将表字段标记为唯一。这意味着该表只能保存一个具有该值的字段的记录。如果您尝试添加多个具有相同字段的记录,则会引发错误。您的应用程序应该捕获该错误并提醒用户。如果您发布您使用的数据库系统类型,我可以向您展示如何执行此操作。

编辑:

这是一个例子。这使用了 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>
于 2013-03-06T12:00:46.610 回答
0

如果您没有列 ID,或者如果用户名列未设置为 UNIQUE,则可以使用此函数:

功能 user_exists($username){
$username = sanitize($username); //清理
return(mysql_result(mysql_query("SELECT COUNT(user_name) FROM user_table WHERE username = '$username'"), 0) == 1) ? 真假;
}

对于新成员/或者如果当前用户想要编辑他的用户名,如果用户名未注册,则此函数返回 false,如果已注册,则返回 true

于 2013-03-06T12:20:54.847 回答
0

您应该在数据库中使用唯一字段,尝试使用 php 或 asp 和 ajax 技术进行捕获,以确保字段是否已填充您现在输入的信息。

于 2013-03-06T12:22:26.247 回答
0

你这里的主键是什么?

我建议,向您的表中添加新的标识列将解决该问题。

您可以根据标识列编辑行。

例如:添加 [UserID] 字段并使其成为唯一的标识列。然后根据 where 子句中的 userid 执行更新操作。

于 2013-03-06T12:05:17.557 回答