CodeIgniter Active Record一次删除多个记录

Ano*_*ous 2 php arrays codeigniter

这是我的控制器功能之一.它从名为"users"的数据库表中获取所有行,并将其放入数组中.然后它加载一个名为'deleteuser'的视图,其中包含传递的数组数据.

function deleteuser(){



    $this->load->model('users');
    $employees['staff'] = $this->users->getStaff();
    $this->load->view('deleteuser', $employees);
}
Run Code Online (Sandbox Code Playgroud)

在deleteuser视图中,有一个从数组生成的复选框类型输入.表单操作调用一个名为remove的函数.

<form action="remove" method = "post">

<?php foreach($staff as $row): ?>
<div class="checkbox">
        <label>
        <input type="checkbox" name="delete[]" value="<?php echo $row->id ?>" />
        <?php echo $row->lastName . ", " . $row->firstName; ?>
        <br />
        </label> 

        <?php endforeach; ?>
        <br /> 
        <br />
        <input type="submit" name = "remove" value = "Delete" class = "btn btn-danger btn-lg pull-left" />

    </div>
Run Code Online (Sandbox Code Playgroud)

remove函数从输入中获取delete数组并将其传递给名为deleteUser的模型函数.

function remove(){
    $data = $this->input->post('delete');

    $this->users->deleteUser($data);

}
Run Code Online (Sandbox Code Playgroud)

现在,这是我遇到麻烦的地方.下面是deleteUser的模型函数,但它给了我一个未定义的偏移:1错误.任何帮助,将不胜感激.

function deleteUser($data)
{
    if ($data) {
        for ($i = 0; $i <= count($data); $i++)
        {
        $this->db->where('id', $data[$i]);
        $this->db->delete('users');
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*ant 8

虽然@DamienPirsy的回答在解决您的问题时是正确的,但我建议采用另一种方法.我会一次删除所有记录,而不是循环.这将最大限度地减少您对数据库的查询次数.

function deleteUser($data)
{
    if (!empty($data)) {
        $this->db->where_in('id', $data);
        $this->db->delete('users');
    }
}
Run Code Online (Sandbox Code Playgroud)