sql >> Databáze >  >> RDS >> Mysql

Spojení tabulek v MySql s jedním společným polem, ale s různými hodnotami pro společné pole

Měli byste mít jednu tabulku obsahující následující sloupce:

id (unikátní, primární), uživatelské jméno, heslo, role (INT, bude přiřazeno 1-3 pro hlavní, personál nebo kore v závislosti na uživateli)

Dodatečně

Můžete mít další tabulku s názvem role, pokud chcete nastavit takto:

id (unikátní, primární), název (možnosti pro název by byly hlavní, zaměstnanci nebo korres)

Když se uživatel přihlásí, udělejte něco jako

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

Nejsem si jistý, ale věřím, že by to fungovalo také. Zkuste tento dotaz.

(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)

Za předpokladu, že se uživatel nachází pouze v JEDNÉ z těchto tří tabulek, by se mělo shodovat s uživatelským jménem a heslem a zjistit, ze které tabulky uživatel přichází. Poté můžete roli vytáhnout pomocí

$role = $row['role'];

Pokud je kombinace uživatelského jména a hesla nesprávná, $role by byla prázdná nebo byste mohli načíst počet řádků [pomocí $iscorrectuser =mysql_num_rows($query)], kde existuje shoda a počet řádků by byl 0. Poté přesměrovat uživatele, který se pokouší přihlásit, s chybovou zprávou „Neúspěšné přihlášení“.



  1. seřadit podle... čísel? Pomozte mi seřadit IP adresy

  2. PHP:Koncept systému hodnocení hvězdičkami?

  3. MySQL - Aktualizace více hodnot a WHERE IN

  4. Jak resetovat kořenové heslo MySQL