这是我的 Controller 功能之一。它从名为“users”的数据库表中获取所有行并将其放入一个数组中。然后它加载一个名为“deleteuser”的 View ,其中包含传递的数组数据。

function deleteuser(){ 
 
 
 
    $this->load->model('users'); 
    $employees['staff'] = $this->users->getStaff(); 
    $this->load->view('deleteuser', $employees); 
} 

在 deleteuser View 中,有一个从数组生成的复选框类型输入。表单操作调用一个名为 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> 

remove 函数从输入中获取删除数组并将其传递给名为 deleteUser 的模型函数。
function remove(){ 
    $data = $this->input->post('delete'); 
 
    $this->users->deleteUser($data); 
 
} 

现在这是我遇到一些麻烦的地方。下面是 deleteUser 的模型函数,但它给了我一个 undefined offset :1 错误。任何帮助,将不胜感激。
function deleteUser($data) 
{ 
    if ($data) { 
        for ($i = 0; $i <= count($data); $i++) 
        { 
        $this->db->where('id', $data[$i]); 
        $this->db->delete('users'); 
        } 
    } 
} 

请您参考如下方法:

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

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


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!