我正在尝试更新应用程序中用户角色的权限。 一切都按我想要的方式工作,直到我想将更改插入我的数据库。
$permission = $_POST['permission'];
$permissiondb = implode(",", $permission);
print_r($permission)
print_r($permissiondb);
许可打印显示:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 6 [4] => 5 [5] => 4 )
permissiondb打印显示:
1,2,3,6,5,4
我的数据库查询是:
INSERT INTO give_permissions (userrole, permission_id) VALUES ($userrole, $permissions);
当我将值发送到我的数据库时,它会在所需的userrole处插入一个'0',而是 我希望系统为userrole添加所有权限。
我希望我能为你提供足够的代码来帮助我......有人可以帮助我吗?
答案 0 :(得分:3)
你有一个idid列表存在于permission_id中,这表明它的设置是一个整数吗?因此,ID列表将不起作用。
a)将您的数据类型更改为varchar并使用'$ permissions'包装$权限。
使用这种方法你会坚持使用implode(“,”,$ permissions),但还有更好的方法。
// Your example with modifications
$permission = $_POST['permission'];
$permissiondb = implode(",", $permission);
// INSERT INTO give_permissions (userrole, permission_id)
// VALUES ($userrole, '$permissiondb');
b)将您的数据类型更改为varchar并使用'json_encode($ permissions)' - 这将是许多人作为快捷方式的首选选项。
当您使用json_encode()时,您可以以更易于管理的方式存储它。编码时,你会收到一个格式为[{1},{2},...]的字符串,你可以很好地放入你的表格。
那么稍后当您想要检索该权限列表时呢?你使用json_decode($ permissions)然后会给你一个JSON数组。为了您的目的,更容易将json数组转换为标准数组(数组)json_decode($ permissions),它将获取该[{}]字符串并为您提供完美标准数组(1,2,3,...)。
// Your example with modifications
$permission = $_POST['permission'];
$permissiondb = json_encode($permission);
// INSERT INTO give_permissions (userrole, permission_id)
// VALUES ($userrole, '$permissiondb');
c)设置相应的表以获取每个id并链接它们。 - 这将是完美的理想。
答案 1 :(得分:0)
将权限数据类型int
更改为varchar
并尝试此操作
INSERT INTO give_permissions (userrole, permission_id) VALUES ($userrole, $permissions);