私のテーブルには4つのフィールドがあり、そのうち2つのフィールドは一意です。たとえば、ユーザー名と電子メールです。人々はフロントエンドに登録します。ajaxを使用して登録結果を動的に表示します。
私は単一の挿入クエリを実行しています。エラーが発生した場合は、エラー番号を使用して、1062(重複エントリ)または1064(クエリ文字列エラー)のどちらであるかを確認します。それ以外の場合、ユーザーは正常に登録されています。
ユーザーを登録できなかった場合は、ユーザーフレンドリーな方法で理由を表示します。重複している場合は、ユーザー名がすでに存在するか、電子メールがすでに存在することを表示する必要があります。
ここでのポイントは、selectクエリを使用して、ユーザー名または電子メールがすでに存在するかどうかを確認したくないことです。存在しない場合は、挿入クエリを実行します。
上記のように実行している場合は、2つのクエリを実行する必要があります。クエリを1つだけ実行し、エラー番号とエラーメッセージを使用して、エラーの種類を正確にユーザーに表示したいと思います。
今、問題は重複にあります。
私はそれが重複していることを知りました、そして私はこのようなエラー文字列を持っています
キー「email」の重複エントリ「test@gest.com」またはキー「username」の重複エントリ「testing」
strposを使用してフィールド名を検索し、電子メールがすでに存在するか、ユーザー名がすでに存在することをユーザーに表示できるようにすることを考えました。
しかし、いくつかのサーバーでは私はこのようになります
キー2の重複エントリ'test@gest.com'またはキー3の重複エントリ'testing'
この場合、最後の部分を抽出するために正規表現を実行する必要があります。文字列の場合は、strcmpを実行して、重複するフィールドを細かくし、それに応じてエラーをユーザーに表示します。または、数値である場合は、どのフィールドに重複があるかを細かくするための単純なswitchステートメント。
****
したがって、テーブルにさらに一意のフィールドがある場合に、どのフィールドが重複しているかを取得する他の方法はありますか。
**または、ない場合は、この質問を人々の心に伝えて、すでにギミックを行っている場合は、ここで共有して、私のような人々が利益を得ることができるようにします。ありがとうございました。