2014-09-19 50 views
0

这是在我的模型get_db.php更新表函数命名为“人”:笨活动记录更新方法工作不正常

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'); 

那么它是工作,更新我的表“person'.Basically,$id没有被正确传递一些reason.Please帮帮我。

注意:fnamelnamemobile是我的表人的列名。

+0

你确定你的数据库更新,当您通过任何随机字符串? – 2014-09-19 09:29:25

+0

@LokeshJain - 是的,我已经尝试过无数次了。 – 2014-09-19 09:43:25

+0

是变量$ data ['fname']和您的数据库列fname值是否相同?两者应该是一样的。我想在这里你错了。 – 2014-09-19 10:03:27

回答

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!"; 
    } 
+0

我试过你的方式,现在它更新每一行,不管它有什么名字。 – 2014-09-19 09:42:36

-1

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

+0

不,我的表中没有主键。为什么我的代码工作,如果我通过字符串手动传递fname的值? – 2014-09-19 09:48:18

+0

如果你传递fname,它会更新找到fname的所有记录。因此,如果您想要更新参与者记录,则需要使用身份证或手机号码进行更新。 – 2014-09-19 09:58:57

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!"; 
    }