我正在从包含文件元信息的单个表中读取行。其中一列acl包含映射到(不受限制,受限制或私有)的标志(0,1或2)。我想创建一个SELECT查询,它将根据两个PHP变量$ userId和$ isAdmin返回文件数据。逻辑如下:
所以基本上我正在对表进行查询,只返回允许用户查看的行
我尝试在子查询中使用各种CASE和IF语句但无法解决它。如果没有在PHP中处理SQL结果,就不可能做到这一点。
任何大师都看到了一种方式?
答案 0 :(得分:1)
select * from file where (acl = 0) or (acl = 1 and ? = 'TRUE') or (acl = 2 and ? = fileownerid)
然后将isAdmin和userid绑定到变量1和2。
答案 1 :(得分:0)
我认为这样的事情应该可以胜任:
$qry = 'SELECT * FROM yourtable
WHERE (acl = 0)
OR (acl = 1 AND '.$isAdmin.')
OR (acl = 2 AND '.$userId.' = fileownerid)';