Php 使用codeigniter在数据库中删除和插入多条记录

Php 使用codeigniter在数据库中删除和插入多条记录,php,mysql,sql,database,codeigniter,Php,Mysql,Sql,Database,Codeigniter,我正在做一个项目,无法解决当前问题 看法 管理员可以使用复选框为用户分配多个或单个角色,如下图所示: 现在,当我们点击提交按钮。以下是控制器的功能: 控制器 它正在成功地存储所有数据。在循环内部,我调用model函数将数据添加到数据库中 现在,我想做的是,如果当前用户有任何现有角色,则必须从数据库中删除所有现有角色,因为它不允许重复值。稍后,在数据库中逐个添加所有角色。这是我的型号代码: 模型 现在,我遇到的问题是,当model运行delete查询时,它只删除数据库中已选中角色的记录。或者,如果

我正在做一个项目,无法解决当前问题

看法

管理员可以使用复选框为用户分配多个或单个角色,如下图所示:

现在,当我们点击提交按钮。以下是控制器的功能:

控制器

它正在成功地存储所有数据。在循环内部,我调用model函数将数据添加到数据库中

现在,我想做的是,如果当前用户有任何现有角色,则必须从数据库中删除所有现有角色,因为它不允许重复值。稍后,在数据库中逐个添加所有角色。这是我的型号代码:

模型

现在,我遇到的问题是,当model运行delete查询时,它只删除数据库中已选中角色的记录。或者,如果我只按用户id删除,那么每次运行查询时它都会删除所有记录。我不能简单地插入记录,因为我必须更新角色,并且可以在不同的时间分配不同的角色

任何帮助都将不胜感激。
谢谢

您可以通过制作两个函数来实现 1 saveRoles$role$user\u id 2.updateRoles$role$user\u id

function saveRoles($role, $user_id)
{
      // can save roles of user using insert 

}

function updateRoles($role, $user_id)
{
     // delete all existing roles of that user 
     // with only user_id in where clause
     // after that you can call 
     $this->saveRoles($role, $user_id);
}
updateRoles函数将删除所有现有条目,并在数据库中插入您要更新的一组新值


我希望这对你有帮助

1>从数据库表中获取所有保存权限2>通过将其与post数据进行比较生成两个数组。一个是删除权限需要删除的数组,第二个是插入权限需要插入到表中的数组您是否也可以共享表结构。。。?所以,这很容易解释。
    function updateRole($role){


    $this->db->where('userID', $role['userID']);
    $this->db->where('roleID', $role['roleID']);

    $this->db->delete('user_roles');
    $this->db->insert('user_roles', $role);
    return ($this->db->affected_rows() > 0) ? TRUE : FALSE;
}
function saveRoles($role, $user_id)
{
      // can save roles of user using insert 

}

function updateRoles($role, $user_id)
{
     // delete all existing roles of that user 
     // with only user_id in where clause
     // after that you can call 
     $this->saveRoles($role, $user_id);
}