关系数据库问题


relation database issue

我在两个表(login_pre,特权)之间创建关系,它们如下:

权限表:

+----------------------------------+
|  AccessLevel | login_id  | pre_id|
|----------------------------------|
|      1       |    1     |   1    |
|      2       |    1     |   2    | 
|      4       |    2     |   4    |
+----------------------------------+

这是login_pre表:

    +----------------------------------+
    |  username| userpass | login_id   |
    |----------------------------------|
    |      a   |    123   |   1        |
    |      a   |    123   |   1        | 
    |      b   |   1234   |   2        |
    +----------------------------------+

其中添加访问权限级别的管理员

如何使读取访问级别=(1或2)的PHP代码login_id=1

我写了这个两页的代码,但这个只读访问级别 =2 的 login_id =1 :

权限页面:

ob_start();
session_start();
include 'C:'xampp'htdocs'database'agtdatabase'agt_site'connection'connect.php';

$query ="SELECT * FROM privilege " ;
$result = mysqli_query($link,$query) or die('');    
             if(isset($_SESSION['sessionloginid']))// point to id of user logged in
        {  
        $query ="SELECT * FROM privilege AS privilege.login_id JOIN login_pre AS login_pre.login_id ON privilege.login_id=login_pre.login_id  WHERE login_id =1 "  ;
        $result = mysqli_query($link,$query) or die('');
        while($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
                {

            // $_SESSION['sessionloginid']= $row['login_id'];// output 11
             $_SESSION['sessionaccess']= $row['AccessLevel'];//output 12 for user login id = 1
                }
        }
    ob_end_flush();

和保护页面:

<?php
include_once('C:'xampp'htdocs'database'agtdatabase'agt_site'login2'privilege.php');

function protect_page()
            {

    if($_SESSION['sessionloginid']== true && $_SESSION['sessionaccess']  )
    {
//header ('location:http://localhost/database/agtdatabase/agt_site/agtSite/agt2.php');
 $_SESSION['sessionloginid'];   // output 1  
 echo $_SESSION['sessionaccess'] ;//output 2 for user loginid = 1 
exit();             
    }
}
protect_page();
?>

单个查询怎么样:

SELECT * FROM privilege AS p JOIN login_pre AS l 
ON p.login_id = l.login_id 
WHERE AccessLevel IN (1, 2) AND l.login_id = 1;

更新

不确定您是否知道,但这部分始终覆盖会话数据,因此您只能获得最后一行:

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
{
    $_SESSION['sessionloginid']= $row['login_id'];
    $_SESSION['sessionaccess']= $row['AccessLevel'];
}