通过许可限制访问

时间:2009-11-13 16:47:54

标签: sql permissions left-join

感谢您查看此内容。我有一个拥有用户,角色和数据库的数据库。 user_roles。 我想要实现的是一个登录,它将选择具有管理员或关联权限的用户。登录然后使用名称和密码来允许访问。

到目前为止我的SQL语法是 -

SELECT * FROM users 
LEFT JOIN ON user_roles 
ON user.id=user_roles.userid AND roleid IN (Administrator, Associate) 
WHERE username = '$username' AND password = '$password'";

我不确定我哪里出错了。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

尝试用“INNER JOIN”替换“LEFT JOIN”

答案 1 :(得分:0)

以下是我编写查询的方法:

$stmt = $pdo->prepare("
SELECT (u.password = :password) AS password_is_correct,
  (r.roleid IS NOT NULL) AS role_is_authorized
FROM users u
LEFT JOIN ON user_roles r
  ON u.id=r.userid AND r.roleid IN (Administrator, Associate) 
WHERE u.username = :username");

$stmt->execute(array(":password"=>$password, ":username"=>$username));

这使您可以区分这三个条件:(1)用户名不存在,(2)密码错误,或(3)角色未授权。

PS:应该引用“管理员”和“助理”还是什么?你使用它们的方式,它们看起来像标识符而不是值。