如何从插入的行中获取最后一个id?

如何从插入的行中获取最后一个id?

问题描述:

I'm trying to get the ID of my master table to be inserted to my transaction table. The insert is happening inside a loop.

Behavior:

  • Insert master
  • Get id
  • Insert Transaction
  • Insert Master
  • Get id
  • Insert Transaction

Controller:

 //Insert Master
 foreach($arr_master as $res_master){

    /*$data['ID_REQUIREMENT_TRANS'] this is an auto-increment column. Inserted automatically*/

    $data['ID_REQUIREMENT']     = $res_master;
    $data['SENT_BY_DATE']       = date("Y-m-d H:i:s");                                                             
    $data['STATUS']             = 1;            

    $this->MAdmin->ins_assign_pic($data);

        //Insert Trans
        foreach($arr_trans as $res_trans){


            $data_d['ID_REQUIREMENT_TRANS'] = $id; //Need to get the last inserted id of the master table               
            $data_d['RECEIVED_BY']              = $res_trans; 
            $data_d['RECEIVED_BY_DATE']     = NULL; 
            $data_d['STATUS']                   = 1;            

            $this->MAdmin->ins_assign_pic_d($data_d);
        }
    }

Model:

function ins_assign_pic($data){
    $q_ins_assign_pic   = $this->db->insert('pm_requirement_assign_pic',$data);
    return $q_ins_assign_pic;

    $id = $this->db->insert_id(); 
    return $id;      //How to send this to my controller
    return true;
}

function ins_assign_pic_d($data_d){
    $q_ins_assign_pic_d = $this->db->insert('pm_requirement_assign_pic_d',$data_d);

    return $q_ins_assign_pic_d;
}

我正在尝试将主表的ID插入到我的事务表中。 插入发生在循环内。 p>

行为: p>

  • 插入主文件 li>
  • 获取ID li>
  • 插入交易 li>
  • 插入主文件 li>
  • 获取ID li>
  • 插入交易 li> ul>

    控制器: p>

      //插入Master 
     foreach($ arr_master as $ res_master){
     
     / * $ data  ['ID_REQUIREMENT_TRANS']这是一个自动增量列。 自动插入* / 
     
     $ data ['ID_REQUIREMENT'] = $ res_master; 
     $ data ['SENT_BY_DATE'] = date(“Y-m-d H:i:s”);  
     $ data ['STATUS'] = 1;  
     
     $ this-> MAdmin-> ins_assign_pic($ data); 
     
     //插入Trans 
     foreach($ arr_trans as $ res_trans){
     
     
     $ data_d ['ID_REQUIREMENT_TRANS'  ] = $ id;  //需要获取主表的最后插入ID 
     $ data_d ['RECEIVED_BY'] = $ res_trans;  
     $ data_d ['RECEIVED_BY_DATE'] = NULL;  
     $ data_d ['STATUS'] = 1;  
     
     $ this-> MAdmin-> ins_assign_pic_d($ data_d); 
    } 
    } 
      code>  pre> 
     
     

    型号: p> function ins_assign_pic($ data){ $ q_ins_assign_pic = $ this-> db-> insert('pm_requirement_assign_pic',$ data); 返回$ q_ins_assign_pic; $ id = $ this-> db-> insert_id(); 返回$ id; //如何将其发送到我的控制器 返回true; } 函数ins_assign_pic_d($ data_d){ $ q_ins_assign_pic_d = $ this-> db-> insert('pm_requirement_assign_pic_d',$ data_d) ; 返回$ q_ins_assign_pic_d; } code> pre> div>

Try controller

$id = $this->MAdmin->ins_assign_pic($data);

And model

function ins_assign_pic($data){
    $q_ins_assign_pic   = $this->db->insert('pm_requirement_assign_pic',$data);
    //return $q_ins_assign_pic;

    $id = $this->db->insert_id(); 
    return $id;      //How to send this to my controller
   // return true;
}

Way 1

SELECT MAX( id ) FROM tableName;

Way 2

SELECT tableName.id FROM tableName ORDER BY tableName.id DESC LIMIT 0,1;

You are doing little wrong here. once return call in function then it will not execute further.

Model:

function ins_assign_pic($data){

    $q_ins_assign_pic   = $this->db->insert('pm_requirement_assign_pic',$data);

    if($q_ins_assign_pic){
        return $this->db->insert_id();
    } else {
        retun false;
    }

}

Controller :

 $newID = $this->MAdmin->ins_assign_pic($data);

You could get the max id from the table:

select max(id) from table

mysqli_insert_id() is the Function you are looking for.