sql >> Database teknologi >  >> RDS >> Mysql

Sammenføjning af tabeller i MySql med ét fælles felt, men forskellige værdier for det fælles felt

Du bør have én tabel, der indeholder følgende kolonner:

id (unik, primær), brugernavn, adgangskode, rolle (INT, vil blive tildelt 1-3 for rektor, personale eller tilsvarende afhængigt af brugeren)

Yderligere

Du kan have en anden tabel kaldet roller, hvis du vil opsætte sådan:

id (unik, primær), titel (muligheder for titel ville være rektor, personale eller korrespondance)

Når brugeren logger på, skal du bare gøre noget lignende

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

Jeg er ikke sikker, men jeg tror, ​​at dette også ville fungere. Prøv denne forespørgsel.

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

Hvis vi antager, at brugeren kun er placeret i EN af disse tre tabeller, så burde den matche brugernavnet og adgangskoden og finde ud af, hvilken tabel brugeren kommer fra. Så kan du trække rollen ud ved at bruge

$role = $row['role'];

Hvis kombinationen af ​​brugernavn/adgangskode er forkert, vil $role være tom, eller du kan hente antallet af rækker [ved hjælp af $iscorrectuser =mysql_num_rows($query)], hvor der er et match, og antallet af rækker ville være 0. Du kan derefter omdiriger brugeren, der forsøger at logge på, med fejlmeddelelsen "Mislykket login".



  1. MySQL regexp meget langsom end gerne

  2. Hvad er det mindste klientfodaftryk, der kræves for at forbinde C# til en Oracle-database?

  3. 2 måder at returnere den julianske dag i SQLite

  4. MySQL - hvor længe skal man oprette et indeks?