Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nối các bảng trong MySql với một trường chung nhưng các giá trị khác nhau cho trường chung

Bạn nên có một bảng chứa các cột sau:

id (duy nhất, chính), tên người dùng, mật khẩu, vai trò (INT, sẽ được chỉ định 1-3 cho chính, nhân viên hoặc chỉnh sửa tùy thuộc vào người dùng)

Ngoài ra

Bạn có thể có một bảng khác được gọi là vai trò nếu bạn muốn thiết lập như thế này:

id (duy nhất, chính), chức danh (các tùy chọn cho chức danh sẽ là hiệu trưởng, nhân viên hoặc corres)

Khi người dùng đăng nhập, chỉ cần làm điều gì đó như

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

Tôi không chắc chắn nhưng tôi tin rằng điều này cũng sẽ hiệu quả. Hãy thử truy vấn này.

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

Giả sử người dùng chỉ nằm ở MỘT trong ba bảng đó thì nó phải khớp với tên người dùng và mật khẩu và tìm xem người dùng đến từ bảng nào. Sau đó, bạn có thể rút lại vai trò bằng cách sử dụng

$role = $row['role'];

Nếu kết hợp tên người dùng / mật khẩu không chính xác thì $ role sẽ trống hoặc bạn có thể tìm nạp số hàng [sử dụng $ iscorrectuser =mysql_num_rows ($ query)] trong đó có một kết quả khớp và số hàng sẽ là 0. Khi đó, bạn có thể chuyển hướng người dùng đang cố gắng đăng nhập bằng thông báo lỗi "Đăng nhập không thành công".



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết nối với mysql trong vùng chứa docker từ máy chủ

  2. MySql Kích hoạt để xóa các bản ghi con trong cùng một bảng

  3. Cách sử dụng NHibernate với cả máy chủ MySQL và máy chủ Microsoft SQL 2008

  4. Sử dụng các công cụ lưu trữ MySQL khác nhau trong thiết kế cơ sở dữ liệu

  5. Làm thế nào để sử dụng MySQLDB SScursor một cách hiệu quả?