2015-08-11 2 views
0

Я пытаюсь обновить последнюю вставленную запись в codeigniter. У меня есть реселлер таблицы, где у меня есть поля, такие как имя, телефон, код страны, баланс и ключ. Теперь этот ключ представляет собой комбинацию другой информации, такой как его имя, телефон и код страны. Поэтому я сначала вставляю информацию о пользователе и сохраняю ключевое поле NUll после этого, я хочу обновить запись и вставить ключ, объединив поля. мне удалось генерировать ключ (конкатенация), но мой код обновляет все записи в таблице, вместо этого я хочу обновить последнюю вставленную запись. поэтому я не могу заполнить ключевое поле, которое было бы неинтересно. Ниже мой код контроллера:Как обновить последнюю вставленную запись в PHP Codeigniter?

public function edit ($id = NULL) 
{ 
    // Fetch a user or set a new one 
    if ($id) { 
     $this->data['user'] = $this->reseller_m->get($id); 
     count($this->data['user']) || $this->data['errors'][] = 'User could not be found'; 
    } 
    else { 
     $this->data['user'] = $this->reseller_m->get_new(); 
    } 

    // Set up the form 
    $rules = $this->reseller_m->rules_admin; 
    $id || $rules['password']['rules'] .= '|required'; 
    $this->form_validation->set_rules($rules); 

    // Process the form 
    if ($this->form_validation->run() == TRUE) { 

     $data = $this->reseller_m->array_from_post(array('sip_username','sip_password','key','allocation_block','name','email','password','phone','balance','user_num','address','country','created','modified','status')); 

     $data['password'] = $this->reseller_m->hash($data['password']); 

     $key=$this->reseller_m->save($data, $id); 

     for($i=1; $i<=$data['user_num'];$i++) 
     { 
      $userdata=array('key'=>$key); 
      // here users is taken name of user table with retailer_id is field 
      $this->user_m->save($userdata,$id); 
     } 

     $values=array($this->input->post('name'),$this->input->post('country'),$this->input->post('name')); 

     $key=implode('-',$values); 


     $this->db->update('reseller' ,array('key'=>$key)); 
     redirect('admin/reseller'); 
    } 

    // Load the view 
    $this->data['subview'] = 'admin/reseller/edit'; 
    $this->load->view('admin/_layout_main', $this->data); 
} 

ответ

1

Все записи обновляется, потому что вы не используете каких-либо ограничений.

Чтобы получить идентификатор последней вставленной записи, вы можете использовать

$last_id = $this->db->insert_id(); 

, а затем выполнить обновление с помощью

$this->db->where('<your_pk_field>',$last_id); 
$this->db->update('reseller', array('key'=>$key)); 

Надеется, что это помогает.

+0

, но вы не получите идентификатор вставки, если он выполняет вставку с использованием запроса –

+0

Да, это правильно. –

+0

Что такое здесь? – Rajan

Смежные вопросы