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

Php 如何将内爆阵列插入数据库?,php,mysql,Php,Mysql,我正在尝试更新应用程序中用户角色的权限。 一切都按照我想要的方式工作,直到我想将更改插入数据库 $permission = $_POST['permission']; $permissiondb = implode(",", $permission); print_r($permission) print_r($permissiondb); 权限打印显示以下内容: Array ( [0] => 1 [1] => 2 [2] => 3 [3]

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

    $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 )
1,2,3,6,5,4
permissiondb打印显示以下内容:

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 6 [4] => 5 [5] => 4 )
1,2,3,6,5,4
我的数据库查询是:

INSERT INTO give_permissions (userrole, permission_id) VALUES ($userrole, $permissions);
当我将值发送到数据库时,它会在想要的userrole处插入一个“0”,但是 我希望系统为userrole设置所有权限


我希望我给了你足够的代码来帮助我。。。有人能帮我吗?

将权限数据类型
int
更改为
varchar
,然后尝试此操作

INSERT INTO give_permissions (userrole, permission_id) VALUES ($userrole, $permissions);

您有一个存储在permission_id中的id列表,该列表建议其设置采用单个整数?因此,ID列表将不起作用

a)将数据类型更改为varchar,并用“$permissions”包装$permissions。

通过使用此方法,您将坚持使用内爆(“,”,$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,…)


c)设置相应的表以获取每个id并链接它们。-这将是最理想的选择。

表中列权限id的数据类型是什么。我猜它的Intu不能直接将数组添加到DB中。将每个项添加到一行中,或者将数组序列化()json_encode(),并在once@rakeshjain是的,它是一个INT。Abhik Chakraborty你能给我一个例子吗?如果它是INT,你不能在里面放一个字符串。如果你的数据类型是INT,你给它一个字符串,你希望它做什么。将您的数据类型更改为VARCHAR(X),根据您的要求选择X。我需要使用json_编码而不是内爆吗?谢谢你的帮助!如果您使用json_encode,您将获得一个json数组,该数组将允许您稍后使用json_decode()并返回原始数组:)我将用一些更全面的示例更新我的答案以提供帮助。非常感谢。你帮我分配!