-2

私は、ユーザーが独自の電子メールでアカウントを作成したときに、特定の電子メールをデータベースに1回だけ挿入できるようにする最も熟練した方法を探していました。試行するとエラーメッセージをトリガーする単純なifステートメントだと思います。

これはphp経由でのみ可能ですか、それともこれを実現するためのmysqlショートカットがありますか?

4

2 に答える 2

5

データベースの電子メールフィールドにUNIQUEインデックスを追加するだけです。これを参照してください。


アップデート

問題をもう少し正確に説明したのでUNIQUE、データベースに電子メールフィールドを保持することをお勧めしますが、既存の電子メールアドレスを使用してアカウントを作成しようとしているユーザー向けにユーザーフレンドリーな通知を追加します。これは、アドレスがすでに使用されていることを示すポップアップを表示したり、パスワードを忘れた場合に備えてパスワードをリセットするように提案したりするなどの方法で実行できます。

于 2012-09-05T17:40:50.627 に答える
2

データベーステーブルに一意の電子メールアドレスのみが必要な場合は、電子メールアドレスを保存しているフィールドに一意のインデックスを作成します。これにより、重複がテーブルに挿入されるのを自動的に防ぎます。

アプリケーション層では、新しいレコードを挿入する前にDBでレコードをチェックするか、単にレコードをデータベースに挿入して、重複キーを挿入しようとした結果として発生するエラーを処理することをお勧めします。

個人的には後者の方が好きです。ほとんどの場合、DBに対するクエリは1つだけで済み(挿入クエリ)、とにかくすべての場合にDBエラー条件を処理するので、エラーが原因かどうかを判断するためのロジックを少し追加するだけです。重複キー挿入の試行は非常に簡単です。

于 2012-09-05T17:42:28.410 に答える