我正在尝试在 SQL 中的一个命令中检查用户是否可以访问一个文档。我尽量避免在 checkAccess() 函数中放置太多 PHP。
我有一个用户名和一个文档 ID。
假设用户名是user1
,文档 ID 是24
。
这些是我的表:
mysql> describe permissions;
+--------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| wfId | char(50) | NO | | NULL | |
| docId | char(50) | NO | | NULL | |
| userId | int(11) | NO | MUL | NULL | |
+--------+----------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
mysql> describe users;
+----------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| login | char(30) | NO | | NULL | |
| password | char(50) | NO | | NULL | |
+----------+----------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
mysql> describe documents;
+---------+-----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | char(100) | YES | | NULL | |
| wfid | char(50) | YES | | NULL | |
| docid | char(50) | YES | | NULL | |
| created | datetime | YES | | NULL | |
| updated | datetime | YES | | NULL | |
+---------+-----------+------+-----+---------+----------------+
6 rows in set (0.00 sec)
这是我正在构建的查询:
mysql> select u.login, d.id, d.wfid, d.docid, p.wfId, p.docId, p.userId
from permissions p, documents d inner join users u
ON (u.login = "user1" AND d.id = 24 AND p.docId=d.docid AND p.wfId=d.wfid);
ERROR 1054 (42S22): Unknown column 'p.docId' in 'on clause'
但是 p.wfId 是先前声明的。关于我怎样才能做得更好或我的句子中有什么错误的任何帮助?
我的目标是返回一个结果,然后授予访问权限。如果查询结果为空集,则拒绝访问。
谢谢。