【问题标题】:CodeIgniter Active Record Delete Multiple Records At OnceCodeIgniter Active Record 一次删除多条记录
【发布时间】:2015-01-04 19:08:34
【问题描述】:

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

function deleteuser(){



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

在 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>

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

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

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

}

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

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

【问题讨论】:

    标签: php arrays codeigniter


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      去掉等于=的符号,应该是

      for ($i = 0; $i<count($data); $i++) 
      

      您正在获取 1 个越界元素。即,如果 count($data) 为 4,则您正在循环:0 1 2 3 4(“计数次要或等于 4”),这确实是五个元素 :)

      【讨论】:

        猜你喜欢
        • 2012-10-24
        • 1970-01-01
        • 1970-01-01
        • 2012-06-16
        • 2012-11-29
        • 2015-02-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多