【发布时间】:2019-11-22 16:28:04
【问题描述】:
我有一个供管理员和用户使用的登录页面。他们都使用相同的表单,并且包含电子邮件和密码字段。
除了 admins 表名为 admins 和 users 表名为 users 之外,数据库表是相同的。电子邮件字段对两者都是唯一的,例如,如果电子邮件“test@example.com”在users 表中,则它不会在admins 表中。
从两个表中获取行、返回该行并检查它从哪个表中获取的最佳方法是什么?
联合、连接、2 个SELECT 查询,或者其他可以执行得更快、更高效的方法?
SELECT * FROM admins
UNION
SELECT * FROM users
WHERE email = :email
或者两个选择:
$row = SELECT * FROM admins WHERE email = :email LIMIT 1
if(!$row) {
$row = SELECT * FROM users WHERE email = :email LIMIT 1
}
// Then I want to do redirect them according to what type of user they are:
if(row comes from admins table) {
header('Location: /admins');
} else {
header('Location: /users');
}
也许其他方式?
【问题讨论】:
-
通常你会有一个
user表和一个role表(当然还有一个链接表)- 将所有用户(和管理员)粘贴到user表中然后交叉引用他们到他们的角色,看看他们被允许做什么......
标签: php mysql join select union