Codeigniter活动记录更新方法无法按预期工作

时间:2014-09-19 09:13:37

标签: php mysql codeigniter activerecord codeigniter-2

这是我的模型 get_db.php 中的一个函数,用于更新名为' person' :

  public function update1($data) {

    $id = $data['fname'];

     //echo $id;

      $this->db->where('fname',$id);

      $this->db->update('person',$data);

      echo "updated successfully!";

        }

相应的控制器方法是:

  public function updateValues(){

    $data['fname'] = $this->input->post('fname');
    $data['lname'] = $this->input->post('lname');
    $data['mobile'] = $this->input->post('mobile');

     $this->load->model('get_db');

     $this->get_db->update1($data);

}

数据成功从控制器传递到模型方法(我已通过回声测试)。但这部分模型方法:

$this->db->where('fname',$id);无效。

但是如果我为where子句传递任何随机字符串,如下所示:

$this->db->where('fname','anystring'); 

然后它正在工作并更新我的表格'。基本上,$id由于某种原因未正确传递。请帮助。

注意:fnamelnamemobile是我的人员中的列名。

3 个答案:

答案 0 :(得分:0)

Please try this
//this is controller code
public function updateValues(){

    $data['fname'] = $this->input->post('fname');
    $data['lname'] = $this->input->post('lname');
    $data['mobile'] = $this->input->post('mobile');
    $this->load->model('get_db');
    $this->get_db->update1($data);
}

//model
public function update1($data) {
      $fname = $data['fname'];
      $this->db->like('fname',$fname);
      $this->db->update('person',$data);
      echo "updated successfully!";
    }

答案 1 :(得分:0)

$id应该从控制器传递给模块。

在控制器中,您必须将id作为条件数组传递给模型函数。您可以将记录ID作为参数传递给updateValues函数。或者从POST。

public function updateValues($id){
    $data['fname'] = $this->input->post('fname');
    $data['lname'] = $this->input->post('lname');
    $data['mobile'] = $this->input->post('mobile');
    $this->load->model('get_db');
    $this->get_db->update1($data,array("id"=>$id));
}

模特:

public function update1($data,$condition) {
    $id = $data['fname'];
     //echo $id;
      $this->db->where($condition);
      $this->db->update('person',$data);
      echo "updated successfully!";
  }

答案 2 :(得分:-1)

我认为使用表格ID或手机号码(如果是唯一的)更新行的最佳解决方案....因为frist名称或姓氏可能重复。