我是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();
?>
任何帮助将不胜感激!不确定具体部分给我带来的麻烦!
答案 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());
}