1

usersそのフィールドの 2 つが とという名前のテーブルがloginありnameます。
これらのフィールドcan notは重複しています。
ユーザーが新しい登録を作成するときに、それがname/login既に存在するかどうかを確認する方法を既に作成しました。
ただし、ユーザーは自分のlogin/name.
ユーザーが登録データを編集するためにページに入力すると、すでにフィールドに現在のデータが入力されています。
私は 3 つのフィールドを持っています[NAME] [EMAIL] [LOGIN]
ユーザーは一度に 1 つだけ、またはすべてを編集できます... 編集しようとしたときに、
それが既に存在するかどうかを確認する方法を作成するにはどうすればよいですか? 多分クエリ?その後、フィールド上で? name/login

select countloginname

--更新--これ
が私の解決策です

4

4 に答える 4

1

これは、使用しているデータベースシステムに任せて、スローされる可能性のあるエラーを処理する必要があります。すべてのデータベースシステム(Access、Oracle、MS SQLなど)では、テーブルフィールドを一意としてマークできます。これは、テーブルがその値を持つフィールドを持つ1つのレコードのみを保持できることを意味します。同じフィールドで複数のレコードを追加しようとすると、エラーがスローされます。アプリケーションはそのエラーをキャッチし、ユーザーに警告する必要があります。使用しているデータベースシステムの種類を投稿すると、その方法を説明できます。

編集:

ここに例があります。これは、SqlClient.SqlException例外クラスを使用します。一意の制約のエラーコードが何であるかはわかりませんが、キャッチに変数を追加して、ブレークポイントを取得できるようにしました。そのエラーコードに一致するように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

データベースで一意のフィールドを使用する必要があります。php または asp と ajax テクニックで catch を試して、現在入力している情報がフィールドに入力されているかどうかを確認してください。

于 2013-03-06T12:22:26.247 に答える
0

列 ID がない場合、またはユーザー名列が UNIQUE のように設定されていない場合は、次の関数を使用できます。

function 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 に答える