如何将我的内爆阵列插入我的数据库?

时间:2014-03-21 09:22:52

标签: php mysql

我正在尝试更新应用程序中用户角色的权限。 一切都按我想要的方式工作,直到我想将更改插入我的数据库。

    $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添加所有权限。

我希望我能为你提供足够的代码来帮助我......有人可以帮助我吗?

2 个答案:

答案 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);