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