MySQL和PHP - 检查用户是否可以访问数据

时间:2011-02-19 19:09:21

标签: php mysql

我有一个交叉引用表owner_meeting_crossref,其中包含所有者ID的列(owner_id)和列所有者有权访问的会议ID的列(meeting_id)。

我的php脚本被发送了一系列会议,我知道当前的用户ID是$ current_user_id。如何有效地检查用户(所有者)是否有权访问发送的会议ID?

1 个答案:

答案 0 :(得分:0)

一种选择是从用户有权访问的列表中获取会议,然后计算差异。

$meetingStr = implode(',', array_map('intval', $meetings));
$accessibleMeetingQuery = $db->prepare("
    SELECT meeting_id 
      FROM owner_meeting_crossref 
      WHERE owner_id=:uid AND meeting_id IN ($meetingStr)
");
$accessibleMeetingQuery->execute(array(':uid' => $current_user_id));
$accessibleMeetings= $accessibleMeetingQuery->fetchAll(PDO::FETCH_COLUMN);
$inaccessibleMeetings = array_diff($meetings, $accessibleMeetings);

另一种方法是从SQL

中完成所有操作
SELECT m.id 
  FROM meetings AS m
    LEFT JOIN owner_meeting_crossref AS om 
      ON m.id=om.meeting_id AND om.owner_id=:uid
  WHERE m.id IN ($meetingStr)
    AND om.meeting_id IS NULL