如何使用codeigniter正确更新数据库中的行

时间:2016-02-26 09:03:44

标签: php codeigniter

我不确定我在哪里出错但是请耐心等待,这是点击保存按钮后出现的网址,http://localhost/gabbyville/tenant/contact/update/contact/save所有想要发生的,就是更改现有数据数据库中的行。有人可以帮帮我吗?

这是控制器

public function update($id)
{

    $contact['contact'] = $this->Contacts_model->get_all();
    $contacts['contacts'] = $this->Contacts_model->get_by_id($id);


    $data['content'] = $this->load->view("tenant/contacts",$contacts,TRUE);
    $data['content'] = $this->load->view("tenant/contacts",$contact,TRUE);
    $data['curpage'] = $this->curpage;
    $this->load->view('template1',$data);            

}

 public function save($id)
{
        $data = array(

            'first_name' => $this->input->post('first_name'),
            'last_name' => $this->input->post('last_name'),
            'postal_address' => $this->input->post('postal_address'),
            'company_name' => $this->input->post('company_name'),                
            'company_url' => $this->input->post('company_url'),
            'industry' => $this->input->post('industry'),
            'phone_number' => $this->input->post('phone_number'),
        );

        $this->Contacts_model->update($this->uri->segment(), $data);

        redirect($this->view_folder.$this->curpage, 'refresh');

}  

这是模型

function get_by_id($id)
{
    $this->db->where($this->id, $id);
    return $this->db->get($this->table)->row();
}
function update($id, $data)
{
    $this->db->where($this->id, $id);
    $this->db->update($this->table, $data);
}

这是我视图中的表单

<form action="contact/save" method="post">  


<div class="row ">
  <input type="text" class="form-control mBottom2 mTop2" name="first_name" placeholder="First Name" value="<?php echo $contacts->first_name?>">
  <input type="text" class="form-control mBottom2" name="last_name" placeholder="Last Name" value="<?php echo $contacts->last_name?>">
  <input type="text" class="form-control mBottom2" name="postal_address" placeholder="Postal Address" value="<?php echo $contacts->postal_address?>">
  <input type="text" class="form-control mBottom2" name="company_name" placeholder="Company Name" value="<?php echo $contacts->company_name?>">
  <input type="text" class="form-control mBottom2" name="company_url" placeholder="Company URL" value="<?php echo $contacts->company_url?>">
  <input type="text" class="form-control mBottom2" name="industry" placeholder="Industry" value="<?php echo $contacts->industry?>">

  <ul class="row contact">
    <li class="mBottom2 clearfix">
      <input type="text" class="form-control pull-left" name="phone_number" placeholder="Phone Number" value="<?php echo $contacts->phone_number?>">

      <div class="i-checks pull-left">
        <label><input type="checkbox"><i></i></label>
      </div>
    </li>

    <li class="mBottom2 clearfix">
      <input type="text" class="form-control pull-left" placeholder="Enter New Phone Number">

      <div class="i-checks pull-left">
        <label><input type="checkbox"><i></i></label>
      </div>

      <a><i class="fa fa-trash-o"></i></a>
    </li>

    <li class="">
      <button type="submit" class="btn btn-w-m btn-primary">Add New</button>
    </li>
  </ul>
  </form>  
  <ul class="row contact">
    <li class="mBottom2 clearfix">
      <input type="text" class="form-control pull-left" placeholder="Email">

      <div class="i-checks pull-left">
        <label><input type="checkbox"><i></i></label>
      </div>
    </li>

    <li class="mBottom2 clearfix">
      <input type="text" class="form-control pull-left" placeholder="Enter New Email">

      <div class="i-checks pull-left">
        <label><input type="checkbox"><i></i></label>
      </div>

      <a><i class="fa fa-trash-o"></i></a>
    </li>

    <li class="mBottom2">
      <button type="button" class="btn btn-w-m btn-primary">Add New</button>
    </li>
  </ul>
</div>

1 个答案:

答案 0 :(得分:0)

仅使用一个模型更新数据或将数据插入表中:

你的模型应该是这样的:

public function save($data = array())
{
  if(isset($data['id']) && ((int)$data['id'] > 0))
  {
    $this->db->where('id', (int)$data['id']);
    $this->db->update('table_name', $data);

    $id = $data['id'];
  }
  else
  {
    $this->db->insert('table_name', $data);

    $id = $this->db->insert_id();
  }

  return $id;
}

并将值从控制器发送到模型,如下所示:

$data = array(
    'id' => ($this->input->post('id')) ? $this->input->post('id') : 0,
  'first_name' => $this->input->post('first_name'),
  'last_name' => $this->input->post('last_name'),
  'postal_address' => $this->input->post('postal_address'),
  'company_name' => $this->input->post('company_name'),                
  'company_url' => $this->input->post('company_url'),
  'industry' => $this->input->post('industry'),
  'phone_number' => $this->input->post('phone_number'),
);