CodeIgniter Active Record 一次删除多条记录
Posted
技术标签:
【中文标题】CodeIgniter Active Record 一次删除多条记录【英文标题】:CodeIgniter Active Record Delete Multiple Records At Once 【发布时间】: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');
【问题讨论】:
【参考方案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”),这确实是五个元素 :)
【讨论】:
以上是关于CodeIgniter Active Record 一次删除多条记录的主要内容,如果未能解决你的问题,请参考以下文章
使用 CodeIgniter Active Record 语句
CodeIgniter Active Record 与常规查询
CodeIgniter Active Record 中的 SQL 注释?