要从数据库填充下拉列表,我使用这样的简单查询。
SELECT *
FROM admin_users
LEFT JOIN account ON account_id = user_account_id
AND user_active = 1
现在我想用IN选项填充列表,只允许用户访问'area'
区域ID在数据库中序列化并获取我使用的数组
$bar = unserialize(base64_decode($user_areas));
现在,我喜欢在打开页面时,我只有用户下拉而不能访问区域。有一种方法可以直接从查询中过滤用户吗?
SELECT *
FROM admin_users
LEFT JOIN account ON account_id = user_account_id
>>>>> WHERE area_id IN ($foo) <<<<
AND user_active = 1
答案 0 :(得分:0)
你必须“内爆”你的数组$ bar才能获得带ID的内联字符串,如下所示:
$bar = array(7, 9, 27, 44); // These numbers are Area IDs
然后使用implode()函数获取内联字符串:
$ inline = implode($ bar,',')
最后,在您的查询中连接:
select ...
>>>>> WHERE area_id IN ($inline) <<<<
答案 1 :(得分:0)
使用subqueries:
SELECT *
FROM admin_users
LEFT JOIN account ON account_id = user_account_id
WHERE area_id IN (
SELECT aria_id from `user_area_table` [where clause if needed]
)
AND user_active = 1