codeigniter 更新方法不起作用

codeigniter update method not working

我是 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();
?>

如有任何帮助,我们将不胜感激!不确定具体是哪个部分给我带来了麻烦!

首先是模型 "MyModel" 没有加载到控制器的 "edit" 方法中。 如果您计划在控制器的每个功能中使用该特定模型,您应该在构造函数中加载它(这样您就不必每次都加载它)。

在模型中使用$this->input->post('Name') 是个坏主意。您应该在控制器中接收该数据并对其进行处理(如果必须),然后将其发送到模型中的方法。 我不知道你是否可以 "chain" 在 codeigniter 中像这样的数据库方法:

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

试试这个:

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

希望对您有所帮助

使用以下模板:

控制器:

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);
}
  ////////////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());

    }