0

ご覧のとおり、次のクエリがあります。

 $sql = "INSERT INTO visitor( visitor_username, email, PASSWORD ) 
       SELECT * FROM ( SELECT '$username', '$email','$password') 
       AS tmp WHERE NOT EXISTS 
      (SELECT admin.admin_username, admin.email FROM admin AS admin 
      WHERE admin.admin_username = '$username' OR admin.email = '$email' 
      UNION SELECT staff.staff_username, staff.email FROM staff 
      AS staff WHERE staff.staff_username = '$username' OR 
      staff.email = '$email' ) LIMIT 1";

基本的に、値 (visitor_username、email) が admin/staff テーブルに存在しない場合、値を挿入します。これは非常にうまく機能し、高速ですが、良い解決策が常に虹をもたらすとは限りません。

テーブルに値を挿入できなかった場合、このエラー メッセージが返されます

echo "User already exists. Please choose a different email address or username.";

どちらが存在したか判断できないため、ユーザー名またはメール アドレスに対して特定のケースでエラーが返されるようにしたいと考えています。

クエリを分割する必要がありますか (1 つの選択、次に挿入)、または同じクエリでこれを行うためにオンラインで見つけられない他の方法はありますか?

私の目標は、たとえば次のクエリで特定のエラー メッセージを返すことです。

「エラー: ユーザー名は既に存在します」または「エラー: メールは既に存在します。」

事前にご確認いただき、ご協力いただきありがとうございます。

4

1 に答える 1