通过Codeigniter更新记录|

时间:2013-08-06 06:47:49

标签: php mysql codeigniter crud

我创建了一个表来插入Books的数据,其值取自表单。现在我想执行CRUD操作。但我在更新数据方面遇到了问题。输入的数据不是替换旧数据,而是作为新条目。我该怎么办?

我所做的如下:

  
    

我在主页上创建了一个链接,该链接重定向到一个页面,其中显示了书籍列表及其详细信息,可以通过另一个链接输入以添加书籍。 Book_ID已被视为库表的主键。

         

现在,在显示列表的页面中,我添加了“编辑”和“删除”按钮。 “删除”按钮工作正常,因为语法直接且简单。但是对于编辑按钮,它会重定向到添加图书页面,但表单会使用$ Book_ID = $ B $ this-> - > uri-> segments [3]自动填充特定数据;我已经发送到base_model以使用该特定的Book_ID从该特定行检索数据。

         

现在我遇到的问题是,在编辑数据之后,我已经放了一个标签......但我不确定是否必须这样做......我被告知必须在那里。但事实上,我实际上必须将Book_ID发送回控制器,并且应该将其发送到模型,在该模型中,它使用该特定id来更新该行中的数据。真的很困惑!

  

2 个答案:

答案 0 :(得分:0)

是的,您必须将book_id发送回update records。您可以通过这种方式执行此操作

您的控制器

`public function update_books($book_id)
{
   $data=$this->Your_model_name->book_data($book_id);
   if($data)
   {
       'your success message';
   }
    else
   {
       'Your error message';
   }
}
`

现在在模型中

`
public function book_data($book_id)
{
   $this->db->where('id',$book_id);
  if( $this->db->update('TABLE_NAME',array('field_name'=>$this->input->post('post_variable_name'))))
    return true;
  else
     return false;

}
`

这是更新记录的简单方法。

答案 1 :(得分:0)

将您的数据作为要更新它的记录的数组和ID发送。

你的控制器

$form_data = array('name'=>$this->input->post('name'),
                   'email'=>$this->input->('email')
                  );
$this->crud_model->update($form_data,$id);

你的模特:

function update($data,$id)
{
   $this->db->trans_start();
   $this->db->where('id',$id);
   $this->db->update('yourtablename',$data);
   $this->db->trans_complete();
   return TRUE;
}

做到这一点,它会起作用。