Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 读取一个用户id的多个记录_Php_Mysqli - Fatal编程技术网

Php 读取一个用户id的多个记录

Php 读取一个用户id的多个记录,php,mysqli,Php,Mysqli,我在两个表之间创建了关系(login\u pre,privilege) 和一个用户id的多个访问级别 详情如下: 特权表: +----------------------------------+ | AccessLevel | login_id | pre_id| |----------------------------------| | 1 | 1 | 1 | | 2 | 1 | 2 | |

我在两个表之间创建了关系(login\u pre,privilege) 和一个用户id的多个访问级别 详情如下:

特权表:

+----------------------------------+
|  AccessLevel | login_id  | pre_id|
|----------------------------------|
|      1       |    1     |   1    |
|      2       |    1     |   2    | 
|      4       |    2     |   4    |
+----------------------------------+
这是登录预表:

    +----------------------------------+
    |  username| userpass | login_id   |
    |----------------------------------|
    |      a   |    123   |   1        |
    |      a   |    123   |   1        | 
    |      b   |   1234   |   2        |
    +----------------------------------+
添加accesslevel的管理员所在位置

如何创建一个用户id可以读取多条记录的php代码

我尝试了很多次这个代码,但它什么也没有输出

   $query ="SELECT * 
FROM privilege AS privilege.login_id 
JOIN login_pre AS login_pre.login_id 
ON privilege.login_id=login_pre.login_id ";//output nothing
然后我尝试:

$query =
        "SELECT * 
        FROM privilege 
        where login_id='".$_SESSION['sessionloginid']."'  " ;
输出如下:

在特权页中:

 if(isset($_SESSION['sessionloginid']))// point to id of user logged in
        {  
        $query =
        "SELECT * 
        FROM privilege 
        where login_id='".$_SESSION['sessionloginid']."'  " ;
$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

                }
        }
和保护页面:

function protect_page()


{


    if($_SESSION['sessionloginid']== true && $_SESSION['sessionaccess'] !=1 )

    {
//header ('location:http://localhost/database/agtdatabase/agt_site/agtSite/agt2.php');
 //$_SESSION['sessionloginid']; // output 1  
 echo $_SESSION['sessionaccess'] ;//output 2 only for user loginid = 1 =>the problem
exit();             

    }
}
protect_page();
旁注:我以前写过这个问题,然后再回答,但它什么也不输出,之后也没有回答,所以我写的问题更清楚我想要什么
为单个用户读取多条记录的代码

您的查询有错误。请看这里:

$query ="SELECT privilege1.AccessLevel 
FROM privilege AS privilege1 
JOIN login_pre AS login_pre1
ON privilege1.login_id=login_pre1.login_id ";
$query ="SELECT * FROM privilege
JOIN login_pre
ON privilege.login_id=login_pre.login_id";

你有一个奇怪的特权设置,这可能是导致你的问题。您最好创建预定义的“角色”,每个角色都有权限,然后将用户与角色关联,而不依赖于权限。我认为您的答案是最好的解决方案。但我是这方面的初学者,并遵循教程什么是预定义规则我编辑它,但用户id为1的accesslevel=4的输出奇怪的输出当您这样做时,例如,“privilege AS privilege.login\u id”、“privilege.login\u id”指向表名,而不是“login\u id”字段。这会给您一个SQL语法错误。由于仅用于为表创建别名(在本例中),因此不指向表字段。首先,从两个别名中删除“.login\u id”。别名不是必需的,所以我从示例中删除了它们。在“ON”子句中,您可以访问字段来比较它们。