codeigniter更新方法不起作用

时间:2015-04-09 23:59:40

标签: php codeigniter crud

我是codeigniter的新手,并尝试编写更新函数来更新数据库中的信息。我已经完成了一些教程,但由于某些原因,我的代码无效!任何提示或帮助将不胜感激。我现在正在测试两个字段,名称和电子邮件,当我转到更新视图时,我得到一个空白页。

这是我的模型方法:

function get_by_id($id){
  return $this->db->get_where('table',array('id'=>$id));
}

function update($id){
 $attributes=array(
    'name'=> $this->input->post('Name'),
    'email'=> $this->input->post('Email')
    );
  return $this->db->where('id',$id)
           ->update('table',$attributes);
}

这是我的相关控制器代码:

function edit(){
  $data['row']=$this->Mymodel->get_by_id($id)->result();
  $data['name']= 'Name';
  $data['email']='Email';
  $this->load->view('updateview', $data);
}

function update($id){

  $this->load->model('Mymodel');
  $this->Mymodel->update($id);
  if($this->input->post()){
    redirect('kittens/view/'.$id, 'refresh');
  }

这是我的更新视图:

<?php echo form_open('kittens/update/')
echo form_hidden('id', $row[0]->id);


foreach($attributes as $field_name){
echo '<p>' . $field_name;
echo form_input($field_name, $row[0]->$field_name) . '</p>';
}
echo form_submit('', 'Update'); 

echo form_close();
?>

任何帮助将不胜感激!不确定具体部分给我带来的麻烦!

3 个答案:

答案 0 :(得分:0)

首先是模型&#34; MyModel&#34;没有加载到&#34;编辑&#34;控制器中的方法。 如果您计划在控制器的每个功能中使用该特定模型,则应将其加载到构造函数中(因此您不必每次都加载它)。

在模型中使用$this->input->post('Name')是一个坏主意。您应该在控制器中接收该数据(如果必须),然后将其发送到模型中的方法。 我不知道你是否可以&#34;链&#34; codeigniter中的db方法如下:

$this->db->where('id',$id)->update('table',$attributes);

试试这个:

$this->db->where('id',$id);
$this->db->update('table',$attributes);

希望有所帮助

答案 1 :(得分:0)

使用以下模板:

控制器:

public function updateData(){
....
 $data = array(
  "columnName" => $columnValue
 );
 $whereValue = $someNumber;
 $this->model_name->updateTable($data, $wherevalue);
 ...
}    

型号:

public function updateTable($data, $whereValue){
 $this->db->where('columnName', $whereValue);
 $this->db->update('tableName', $data);
}

答案 2 :(得分:0)

  ////////////model for update/////////////
      public function update_customer_contacts($where, $data){

return $this->db->update('customer_contacts', $data, $where);

    }

 ///////////////////update customer///////////////////
  public function update_customer()
    {
              $data = array(
                'company_name'=>$this->input->post('company_name'),
                'address'     =>$this->input->post('address'),
                'telephone'   =>$this->input->post('telephone'),
                'fax'         =>$this->input->post('fax'),
                'email'       =>$this->input->post('email'),
                'website'     =>$this->input->post('website'),
                 );


     $res= $this->customer_model->update_customer(array('customer_id' => $this->input->post('customer_id')), $data);
      ;
     echo json_encode($this->input->post());

    }