【问题标题】:Delete and insert multiple records in database using codeigniter使用codeigniter在数据库中删除和插入多条记录
【发布时间】:2014-08-20 08:12:18
【问题描述】:

我正在做一个项目,但无法弄清楚当前问题的解决方案。

查看

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

现在,当我们点击提交按钮时。下面是控制器的作用:

控制器

        $addRoles['userID']=$uid;
        $addRoles['addDate']=time();

        foreach($this->input->post('roles') as $val)
            {

            $addRoles['roleID']=$val;

            $this->admins->updateRole($addRoles);

            }

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

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

型号

    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;
}

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

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

【问题讨论】:

  • 1> 从数据库表中获取所有保存权限 2> 通过将其与发布数据进行比较来制作两个数组。一是删除数组(需要删除哪些权限),二是插入数组(插入表的权限)
  • 你能分享一下你的表结构吗...?所以,这很容易解释。

标签: php mysql sql database codeigniter


【解决方案1】:

你可以做两个函数 1) saveRoles($role, $user_id) 2.)updateRoles($role, $user_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 函数将删除所有现有条目并在 Db 中插入您要更新的新值集。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-11
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多