Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.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获取特定列名并分配数组?_Php_Arrays_Mysqli - Fatal编程技术网

如何使用PHP获取特定列名并分配数组?

如何使用PHP获取特定列名并分配数组?,php,arrays,mysqli,Php,Arrays,Mysqli,我在users表中有以下列 id username rights_reports rights_notify rights_users rights_supporting lang deleted 1 admin 1 1 1 1 en 0 2 subadmin 1 0 0

我在
users
表中有以下列

id username  rights_reports  rights_notify  rights_users  rights_supporting  lang  deleted

1   admin     1                 1               1           1                 en    0
2   subadmin  1                 0               0           1                 en    0   
我想检查用户的访问权限

<?php

$sql = "SELECT * FROM `users` WHERE `id`='1'";
$resul = tdbQuery($sql);
$data = $result->fetch_assoc();
$permission = array('rights_reports'=>$data['rights_reports'],'rights_notify'=>$data['rights_notify'],'rights_users'=>$data['rights_users'],'rights_supporting'=>$data['rights_supporting']);
$_SESSION['access']=$permission;
?>

更好的是,您必须将权限存储在行中,而不是列中。并使用PDO而不是mysqli。因此,正确的代码应该是

$sql = "SELECT r.name, ur.value FROM user_rights ur, rights r 
        WHERE user_id=? AND r.id = ur.rights_id";
$stmt = $pdo->prepare($sql);
$stmt->execute([1]);
$_SESSION['access'] = $stmt->fetchAll(PDO::FETCH_KEY_PAIR);
表格为:
权限

id | name
1  | reports
2  | notify
3  | users
4  | supporting
用户权限

user_id | rights_id
      1 |         1
      1 |         4
这就是数据库的工作原理

user_id | rights_id
      1 |         1
      1 |         4