多次删除,带有ci中的复选框

时间:2015-09-11 13:59:23

标签: php codeigniter

我知道已经有人问过,但我无法解决这个问题。以下是我的控制模块

public function ahome()
{
    $this->load->model('model');
    $data['user'] = $this->model->selall('user');
    $this->load->view('ahome', $data);
    if ($this->input->post('del'))
    {
        $did = $this->input->post('chk');

        // print_r($did);

        for ($i = 0; $i < count($did); $i++)
        {
            $multi = $did[$i];
            print_r($multi);
            $this->model->delall("user", $multi);

            // redirect("control/ahome");

        }
    }
}

这是我的模型模块

 public function delall($tb,$wh)
 {
     $this->db->query("delete from $tb where uid in('$wh')");
 }    

现在问题是它只删除单行而不是多行

2 个答案:

答案 0 :(得分:0)

在查询字符串中,尝试删除$wh变量周围的引号。

public function delall($tb,$wh)
{
  $this->db->query("delete from $tb where uid in ($wh)");
}

应该让它发挥作用;但是,您应该使用CodeIgniter的查询绑定。像这样:

public function delall($tb,$wh)
{
  $this->db->query("delete from $tb where uid in (?)", array($wh));
}

有关详细信息,请参阅this answer

答案 1 :(得分:0)

试试这个, 控制器,

public function ahome()
{
    $this->load->model('model');
    $data['user'] = $this->model->selall('user');
    $this->load->view('ahome', $data);
    if ($this->input->post('del'))
    {
        $did = $this->input->post('chk');

        // print_r($did);

        foreach ($did as $d_id)
        {
            $this->model->delall("user", $d_id);

            // redirect("control/ahome");

        }
    }
}

型号:

public function delall($tb,$wh)
 {
     $this->db->where('id',$wh);
     $this->db->delete($tb);
     return true;
 }