Php 读取一个用户id的多个记录
我在两个表之间创建了关系(login\u pre,privilege) 和一个用户id的多个访问级别 详情如下: 特权表:Php 读取一个用户id的多个记录,php,mysqli,Php,Mysqli,我在两个表之间创建了关系(login\u pre,privilege) 和一个用户id的多个访问级别 详情如下: 特权表: +----------------------------------+ | AccessLevel | login_id | pre_id| |----------------------------------| | 1 | 1 | 1 | | 2 | 1 | 2 | |
+----------------------------------+
| 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”子句中,您可以访问字段来比较它们。