设想
我在这个问题中有三个要素。一个是这种格式的 id 数组:(1,3,5,6,8)。该数组是我要显示的用户 ID 列表。第二个元素是包含用户信息的表格,例如:id name surname email。第三个元素是包含用户配置的第二个表。最后一张表中有两个参数,一个是lid,另一个是usraction(其中重要的是这两个)。lid 代表权限类型和 usraction 值,如果用户希望他的数据是公开的,那么该表上将有一行lid=3和usraction="accepted",每次用户更改此权限时,我都会注册操作的日期时间,因此每次更改时都会添加一个新行,为了检索权限的实际状态,我必须为用户检索最后一行像这样检查 usraction 的值:
SELECT * FROM legallog WHERE uid = '.$user['id'].' AND lid = 3 ORDER BY ABS(`registration` - NOW()) LIMIT 1
然后在php中:
if($queryresult && $queryresult[0]['usraction']=='accepted') //display data
问题
在描述了我如何获得当时一个用户设置的权限的实际状态的场景 id 中,现在的问题是我想在一两个 sql 调用中清理一组 id。假设我想打印 4 个用户的用户信息,一个函数给了我这种格式的 id:(2,6,8,1),但是这些用户可能不想显示他们的信息,使用我之前显示的查询我可以为每个用户调用 sql 服务器,然后生成一个新数组,如果授权的用户是 1 和 8,则结果数组将为 (8,1)。
想法是 100 个用户的数组,我将拨打 100 个电话,我不想要这个,有没有办法在一个或两个查询中解决这个问题?