Search code examples
phpcodeigniter

too few arguments for function error (updating data) CodeIgniter


there's an error appearing in my code for update. too few argument for function. I searched the net and I'm not sure if I'm passing the id.

Controller:

public function update()
  {
  
    if($this->Admin_model->update($this->input->post(null, true))){
     $this->session->set_flashdata('flash_msg', ['message' => 'User updated successfully', 'color' => 'green']);
   } else {
     $this->session->set_flashdata('flash_msg', ['message' => 'Error updating user.', 'color' => 'red']);
   }
   $this->admin_redirect('cms');
  }

Model:

public function update($id, $data)
  {
    $data['password'] = password_hash($data['password'], PASSWORD_DEFAULT);
    return $this->db->update($this->table, $data);
  }

Solution

  • As @WILLIAM, stated in a comment, your update(...) method expects 2 parameters yet one is passed.

    Change your update(...) method to this:

    public function update($data)
      {
    
        $data['password'] = password_hash($data['password'], PASSWORD_DEFAULT);
        $this->db->where('id', $data['id']);
        return $this->db->update($this->table, $data);
      }
    

    This assumes that 'id' is part of your HTML form.i.e:

    <input  type="hidden" name="id" value="<?php echo $id ?>">