Codeigniter更新数据库表

时间:2019-03-22 12:56:25

标签: mysql codeigniter

我已经可以从数据库更新数据,但是问题是我只想更新一个数据,但是当我输入新数据时,它更新了数据库表中的所有数据

像这样 enter image description here

这是视图:

<form method="post" action="<?php echo base_url() ?>user/update_user_data">

<div class="form-group">
    <label> Enter New first name</label>
    <input type="text" name="firstname" class="form-control" />
</div>
<div class="form-group">
    <label> Enter New last name </label>
    <input type="text" name="lastname" class="form-control" />
</div>
<div class="form-group">
    <label> Enter New fullname </label>
    <input type="text" name="fullname" class="form-control" />


<div class="form-group">  
    <input type="submit" name="update" value="Update" class="btn btn-info" />
</div>

这是模型:

function update_data($id = FALSE)  
  {  

    if($id == FALSE){
            $query = $this->db->get('user');
            return $query->result_array(); 
        }

        $query = $this->db->get_where('user', array('id' => $id));
        return $query->row_array();
  } 
 public function update_user_data($data)
    { 
        $data = array('firstname' => $this->input->post('firstname'),
                        'lastname' => $this->input->post('lastname'),
                        'fullname' => $this->input->post('fullname')


                      );

        $this->db->update("user", $data);
    }

这是控制器:

    public function update_data($id = NULL)
    {

        $data['us'] = $this->User_Model->update_data($id);

        if (empty($data['us'])) {
            show_404();
        }
         $this->load->view('user/update-user', $data);
    }

    public function update_user_data()
    {
        $data['title'] = 'Update user';

            $this->load->library('upload');
                $data =  array('upload_data' => $this->upload->data());
            $this->User_Model->update_user_data($data);

            redirect('user/index');

    }

我只是初学者,请尊重谢谢 如果我的代码有问题,请告诉我。 顺便说一句,它的工作原理是,一旦我更新了用户数据,它便更新了数据库中的所有数据。

1 个答案:

答案 0 :(得分:1)

由于没有指定任何特定行,因此您正在修改表中的每一行。因此,更新代码运行后,每一行都会更新。您应该使用以下代码

function update_data($id = FALSE)  
  {  

    if($id == FALSE){
            $query = $this->db->get('user');
            return $query->result_array(); 
        }

        $query = $this->db->get_where('user', array('id' => $id));
        return $query->row_array();
  } 
 public function update_user_data($data)
    { 
        $data = array('firstname' => $this->input->post('firstname'),
                        'lastname' => $this->input->post('lastname'),
                        'fullname' => $this->input->post('fullname')


                      );

        $this->db->where('id','1')->update("user", $data); //change id as require your own need
    }