php将数组转换为mysql查询

php将数组转换为mysql查询,php,mysql,arrays,Php,Mysql,Arrays,我有一个已提交的表单,其中创建了一个用户,可以分配多个角色: 例如管理员、用户等 表单将数据发布为数组角色[] 当只能选择一个角色时,我让一个mysqli_查询在users表中创建用户。然后,第二个在roleid表中创建一行,该行使用mysqls LAST_INSERT_ID将用户ID与roleid进行匹配,如果为用户分配了多个角色,mysql LAST_INSERT_ID会起作用吗 三个表格如下: users (name, email, password, id) roleid (userid

我有一个已提交的表单,其中创建了一个用户,可以分配多个角色: 例如管理员、用户等

表单将数据发布为数组角色[]

当只能选择一个角色时,我让一个mysqli_查询在users表中创建用户。然后,第二个在roleid表中创建一行,该行使用mysqls LAST_INSERT_ID将用户ID与roleid进行匹配,如果为用户分配了多个角色,mysql LAST_INSERT_ID会起作用吗

三个表格如下:

users (name, email, password, id)
roleid (userid, roleid)
roles(id, description)

我需要在roleid表中为用户创建表单选择的每个复选框创建一个条目。我曾考虑过内爆数组内爆“,”,$roles,但我不确定mysql是否接受这种形式的值。有什么想法吗?

如果您曾经将一个用户插入到用户表中,并将最后一个插入ID保存到一个变量中,例如$LAST\u insert\u ID,那么您可以在不被覆盖的情况下使用此$LAST\u insert\u ID执行任意多的查询:-

因此:

插入新用户 检索$last\u insert\u id 对于每个角色ID,运行insert into roleid值$role\U ID、$last\U insert\U ID 或 将一个insert运行到roleid值$role\u id\u 1、$last\u insert\u id、$role\u id\u 2、$last\u insert\u id、$role\u id\u 3、$last\u insert\u id。。。
您必须为每个角色查询一次,或者在一个查询中插入多条记录。有了MySQLi,您甚至可以使用预先准备好的语句来实现这一点

$user_id = mysqli_insert_id();
$query = "INSERT INTO `roleid` (userid, roleid) VALUES ";

foreach($roles as $index => $role_id) {
  $roles[$index] = "($user_id," . intval($role_id) . ")";
}

$query .= implode(', ', $roles);

将最后一个插入ID保存在PHP变量中。然后在查询中使用这个变量。你可以在tablefield1、field2、field3中插入值1、2、3、4、5、6、7、8、9。好的,我让php将sql语句构造为INSERT INTO roleid userid、roleid VALUESLAST_INSERT_ID、'1'LAST_INSERT_ID、'2'如果在同一语句中调用两次,它会起作用吗?
if (count($roles)) {
   $qry="INSERT INTO roleid (userid, roleid) VALUES ";
   $part="($user_insert_id, ";
   $qry . = $part . implode(")," . $part, roles) . ")";
   mysql_query($ary, $db_handle);
}