sql >> データベース >  >> RDS >> Mysql

MySqlのテーブルを1つの共通フィールドで結合しますが、共通フィールドの値は異なります

    次の列を含む1つのテーブルが必要です:

    id(一意、プライマリ)、ユーザー名、パスワード、役割(INT、ユーザーに応じて、プリンシパル、スタッフ、またはコレに1〜3が割り当てられます)

    さらに

    次のように設定する場合は、rolesという別のテーブルを作成できます。

    id(一意、プライマリ)、タイトル(タイトルのオプションは、プリンシパル、スタッフ、またはコレスになります)

    ユーザーがログインしたら、次のような操作を行います

    if($role == 1){
    // redirect to principal page
    }
    elseif($role == 2){
    // redirect to staff page
    }
    elseif($role == 3){
    // redirect to corres page
    }
    

    確かではありませんが、これでもうまくいくと思います。このクエリを試してください。

    (SELECT '1' AS role FROM table1 WHERE username = $username AND password = $password)
    UNION ALL
    (SELECT '2' AS role FROM table2 WHERE username = $username AND password = $password)
    UNION ALL
    (SELECT '3' AS role FROM table3 WHERE username = $username AND password = $password)
    

    ユーザーがこれら3つのテーブルのいずれかにのみいると仮定すると、ユーザー名とパスワードを一致させ、ユーザーがどのテーブルから来ているかを確認する必要があります。次に、

    を使用して役割を引き出すことができます
    $role = $row['role'];
    

    ユーザー名とパスワードの組み合わせが正しくない場合、$ roleは空になるか、[$ iscorrectuser =mysql_num_rows($ query)を使用して]一致する行数を取得でき、行数は0になります。ログインしようとしているユーザーを「ログインに失敗しました」というエラーメッセージでリダイレクトします。



    1. OracleのTRANSLATE(…USING)関数

    2. あるmysqlデータベースから別のmysqlデータベースにテーブルをコピーする方法

    3. GROUP_CONCATカンマ区切り文字-MySQL

    4. MySQL5.6は、サービスを開始しようとしているプロセスでスタックしました