用两个where子句进行更新


make update with 2 where clauses

我想用2 where子句做更新函数,这是我的模型代码:

function updateJawabanSensus($where,$where1,$data) {
   $this->db->where('id_jawaban',$where); 
   $this->db->where('id_sensus',$where1); 
   $this->db->update($this->_table, $data); 
   return $this->db->affected_rows(); 
}

控制器代码:

function update_jawaban_sensus() {  
    $id_jawaban = $this->input->post('id_jawaban', TRUE);
    $id_sensus = $this->input->post('id_sensus', TRUE);
    $id_keluarga = $this->input->post('id_keluarga', TRUE);
    $id_pertanyaan_sensus = $this->input->post('id_pertanyaan_sensus', TRUE);
    $jawaban = $this->input->post('jawab_0', TRUE);
    $id_indikator = $this->input->post('idInd_0', TRUE);
    $indikator = $this->input->post('indikator_0');
    $bobot = $this->m_pilihan_jawaban->get_bobot($id_sensus,$jawaban);
    $nilai_bobot = $bobot * $indikator;
        $data = array(
                'id_jawaban' => $id_jawaban,
                'id_sensus' => $id_sensus,
                'id_indikator' => $id_indikator,
                'id_keluarga' => $id_keluarga,
                'id_pertanyaan_sensus' => $id_pertanyaan_sensus,
                'jawaban' => $jawaban,
                'nilai_bobot' => $nilai_bobot
            );
        //echo json_encode($jawaban);
      $result = $this->m_jawaban_sensus->updateJawabanSensus(array('id_jawaban' => $id_jawaban,'id_sensus' => $id_sensus), $data);
     redirect('indikatorkesejahteraan/c_jawaban_sensus/konfirmasi/'.$id_sensus.'/'.$id_keluarga);
}

但是当我点击更新按钮的数据不能改变..谢谢你的注意

第一个问题:您没有显示在您的模型中定义$this->_table的位置。(我假设你在__construct中设置了这个)

第二个问题:你的模型方法期望三个参数:updateJawabanSensus($where,$where1,$data),但你只发送了两个:

updateJawabanSensus(array('id_jawaban' => $id_jawaban,'id_sensus' => $id_sensus), $data);
<<p> 解决方案/strong>

Codeigniter将接受数组中的多个where子句。因为你已经有了一个数组,所以只发送一次,并允许你的模型方法只接受两个参数。

控制器:

$arr = array(
         'id_jawaban' => $id_jawaban,
         'id_sensus' => $id_sensus
       );
$this->m_jawaban_sensus->updateJawabanSensus($arr, $data);

模型:

function updateJawabanSensus($where,$data) {
   $this->db->where($where); 
   $this->db->update($this->_table, $data); 
   return $this->db->affected_rows(); 
}

来源:http://www.codeigniter.com/user_guide/database/query_builder.html looking-for-specific-data

您只从控制器发送参数。

$result = $this->m_jawaban_sensus->updateJawabanSensus(array('id_jawaban' => $id_jawaban,'id_sensus' => $id_sensus), $data);

而不是使用两个where条件,你可以简单地一次完成。

function updateJawabanSensus($where,$data) {
   $this->db->where($where); 
   $this->db->update($this->_table, $data); 
   return $this->db->affected_rows(); 
}