Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verbinden von Tabellen in MySql mit einem gemeinsamen Feld, aber unterschiedlichen Werten für das gemeinsame Feld

Sie sollten eine Tabelle haben, die die folgenden Spalten enthält:

ID (eindeutig, primär), Benutzername, Passwort, Rolle (INT, würde je nach Benutzer 1-3 für Auftraggeber, Mitarbeiter oder Corre zugewiesen)

Zusätzlich

Sie könnten eine weitere Tabelle mit dem Namen roles haben, wenn Sie diese wie folgt einrichten möchten:

id (eindeutig, primär), Titel (Optionen für den Titel wären Auftraggeber, Mitarbeiter oder Corres)

Wenn sich der Benutzer anmeldet, tun Sie einfach so etwas wie

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

Ich bin mir nicht sicher, aber ich glaube, das würde auch funktionieren. Probieren Sie diese Abfrage aus.

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

Angenommen, der Benutzer befindet sich nur in EINER dieser drei Tabellen, dann sollte er mit dem Benutzernamen und dem Passwort übereinstimmen und herausfinden, aus welcher Tabelle der Benutzer kommt. Anschließend können Sie die Rolle mit

herausziehen
$role = $row['role'];

Wenn die Benutzername/Passwort-Kombination falsch ist, dann wäre $role leer oder Sie könnten die Anzahl der Zeilen abrufen [mithilfe von $iscorrectuser =mysql_num_rows($query)], wo es eine Übereinstimmung gibt, und die Anzahl der Zeilen wäre 0. Sie könnten dann Umleitung des Benutzers, der versucht, sich anzumelden, mit der Fehlermeldung „Anmeldung fehlgeschlagen“.