如何使用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