0

感谢您查看此内容。我有一个包含用户、角色和 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'";

我不确定我哪里出错了。

在此先感谢您的帮助。

4

2 回答 2

1

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

于 2009-11-13T16:49:52.047 回答
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:应该引用“Administrator”和“Associate”还是什么?您使用它们的方式,它们看起来像标识符而不是值。

于 2009-11-13T17:19:11.753 回答