CodeIgniter $this-> db получить последний первичный ключ

#php #codeigniter #primary-key

#php #codeigniter #primary-key

Вопрос:

Я хочу получить последний первичный ключ с именем таблицы invoice_main Я пытаюсь таким образом

 $in=$this->db->insert_id();
redirect(base_url()."home/index/".$in); 
  

Я пропустил код после $print = $this->db->insert('invoice_main',$datas); этой строки

 Public function insert_invoice()
        {

          $item_name = $_POST['item'];
          $rate = $_POST['rate'];
          $quantity = $_POST['quantity'];
          $tax = $_POST['tax'];
          $amount = $_POST['amount'];


          $invoice_id = $this->input->post('invoice_id');
          //$invoice_id  ;
          $datas = array(
            'user_id' => $this->session->userdata('user_id'),
               'invoice_id' => $this->input->post('invoice_id'),
             'pt_opnum' => $this->input->post('pt_opnum'),
             'pt_uhid' => $this->input->post('pt_uhid'),
             'doc_name' => $this->input->post('doc_name'),
             'status'=>1
            );
          $print = $this->db->insert('invoice_main',$datas);
          for ($i=0; $i <count($item_name) ; $i  ) {
            $data=array(
                'invoice_id' =>$invoice_id,
                'pt_name'=> $this->input->post('pt_opnum'),
                'date'=>date('d-m-Y'),
                'name'=>$item_name[$i],
                'rate'=>$rate[$i],
                'quantity'=>$quantity[$i],
                'tax'=>$tax[$i],
                'amount'=>$amount[$i],
                'sub_total'=>$_POST['sub_total'],
                'o_tax'=>$_POST['o_tax'],
                'grand_total'=>$_POST['grand_total'],
                'status'=>1
                );

            $this->db->insert('invoice_details',$data);


        }


        return($this->db->affected_rows()!=1)?false:true;


    }
  

Комментарии:

1. после insert запроса вы можете использовать $this->db->insert_id() для получения вставленного первичного ключа

2. в чем проблема?

3. если я поставлю после этой строки $print = $this-> db-> insert(‘invoice_main’,$ datas); . не выполнил эту строку $this-> db-> insert(‘invoice_details’,$ data);

4. возврат к $print

Ответ №1:

я думаю, $pirnt это не возвращает значение. для успешной вставки вы должны использовать :

 $this->db->insert('table_name',data)
$isSuccess = $this->db->insert_id();

if($isSuccess)
{
 echo 'data updated with id : '.$isSuccess;
}else{
echo 'failed error';
}
  

Ответ №2:

 $this->db->insert('table_name',data);
$last_insert_id= $this->db->insert_id();