Php 仅向添加到表中的用户显示数据

Php 仅向添加到表中的用户显示数据,php,mysql,Php,Mysql,首先,用户在其帐户中创建事件(学院事件),比如说TechTo,他只能使用下面的查询访问创建的事件 $sql_created=mysqli_query ($dbconfig,"SELECT * FROM events WHERE userID='".$_SESSION['userid']."'") or die( mysqli_error($dbconfig)); 现在我要做的是,我有另一个表名event\u coordinators,其中创建事件TechTo的用户希望在event\u co

首先,用户在其帐户中创建事件(学院事件),比如说
TechTo
,他只能使用下面的查询访问创建的事件

$sql_created=mysqli_query ($dbconfig,"SELECT * FROM events 
WHERE userID='".$_SESSION['userid']."'")  or die( mysqli_error($dbconfig));
现在我要做的是,我有另一个表名
event\u coordinators
,其中创建事件
TechTo
的用户希望在
event\u coordinators
表中添加协调员,然后在
event\u coordinators
表中添加的用户还可以控制
TechTo
创建的事件,并可以编辑关于事件的删除

这是添加了协调人的
事件协调人

coID    addBy   addedUserID     eventID
1        1        3              2
2        1        11             3
3        1        11             2
这是用户创建事件的
events
表 此处
events.userID=event\u coordinators.addBy

eventID     userID  eventName   
  2           1     Mind Sparx  
  3           1     Tech Vision         

对于上述情况,我如何实现select语句或其他方法听起来您需要以下内容:

select distinct events.*
from events
left join event_coordinators ec on ec.eventName = events.name
where events.userID  = {$_SESSION['userid']}
   or ec.addedUserID = {$_SESSION['userid']}

请注意,在events表上添加一个索引并将其存储在event_coordinators中会更简单,而不是在字符串event name上加入索引,特别是在事件名称可能不唯一的情况下。

根据我所读的内容,您正在将“event A”作为user 1添加到数据库中。 用户1拥有编辑/删除事件A的所有权限。 是否要将用户2添加到事件协调员,以便他们也可以编辑和删除事件A

那么,, 我会做类似的事情

$uid=$_SESSION['userid'];
$sql=mysqli_query($dbconfig, "SELECT eventName FROM event_coordinators WHERE addedUserID='{$uid}'");
if(mysqli_num_rows($sql)) {
    echo "You are a co-ordinator of the following events:";
    while($r=mysqli_fetch_array($sql)) {
        echo "<a href='event.php?event=".$r['eventName']."'>".$r['eventName']."</a><br />";
    }
}

是的,我有events表的eventID,但为了理解,我将其重命名为stringRight,但标准方法是将事件ID存储在event_coordinators表中,然后以上面的查询为例,您可以从
events.name
获取人类可读的文本。数据库应该只需要在一个地方存储人类可读的版本。这是所有事件列表的工作人员。你的意思是说它们与select语句无关?你能详细说明一下吗?这是一个select语句是的,我想这是我需要在主页上使用的,而不是在事件列表页面上。谢谢。第一个代码示例将显示一个事件列表,添加的用户协调员可以访问该列表,第二个代码示例将用于特定事件的编辑页面或查看页面,除非您设计了系统,以便将事件的创建者自动添加到
event\u coordinators
表中,否则您可能希望第二个查询包含用户作为协调者的事件(它确实是这样做的)以及用户创建的事件(它没有创建)。不清楚“这种查询”是什么意思。向
事件协调器插入行的语句
?“可以编辑或删除关于事件”的语句?或者你的意思是选择声明?关于
事件
表的唯一信息是它包含一个名为
userid
的列。由于没有
事件的定义
表,没有示例数据,也没有所需结果集的示例,我们只是猜测您试图实现的目标。是的,很抱歉没有提供关于该问题的信息,但我编辑了上述问题,以便更好地理解它,而且我对堆栈溢出还不熟悉
$uid=$_SESSION['userid'];
$event_name=$_GET['event'];

$sql=mysqli_query($dbconfig, "SELECT eventName FROM event_coordinators WHERE addedUserId='{$uid}' AND eventName='{$event_name}'");

if(mysqli_num_rows($sql)) {
   //User has access to this event
} else {
   //User couldn't be found, therefore no access to this event.
}