这是我的控制器函数之一。它从一个名为"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函数从输入中获取delete数组,并将其传递给名为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');
}
}
}
虽然@DamienPirsy的回答在解决您的问题时是正确的,但我建议您采用另一种方法。我会一次删除所有记录,而不是循环删除。这将最大限度地减少您对数据库的查询次数。
function deleteUser($data)
{
if (!empty($data)) {
$this->db->where_in('id', $data);
$this->db->delete('users');
}
}
删除相等的=
符号,应为
for ($i = 0; $i<count($data); $i++)
您正在获取超出边界的1个元素。即,如果count($data
)为4,则循环:0 1 2 3 4("count minor等于4"),这实际上是五个元素:)