#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();