2017-07-05 24 views
1

私はマスターテーブルのIDをトランザクションテーブルに挿入しようとしています。挿入物がループ内で起こっています。挿入された行から最後のIDを取得する方法は?

行動:

  • 挿入マスター
  • ゲットID
  • 挿入トランザクション
  • 挿入マスター
  • ID
  • 挿入トランザクションを取得します

コントロールLER:

//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); 
     } 
    } 

モデル:

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; 
} 

答えて

0

てみコントローラ

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

とモデル

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; 
} 
+0

'$ id = $ this-> MAdmin-> ins_assign_pic($ data);'は私にマスターの二重データを与えます。 '$ id = $ this-> MAdmin-> ins_assign_pic($ data);'を使用すると、masterの1つのデータだけが挿入されます。なぜ?? – ashura91

+0

あなたは '$ data_d ['ID_REQUIREMENT_TRANS']'として他の値(例:1)を使用しているとしたら、 'ashura91 –

+0

の' foreach($ arr_master as $ res_master){'を調べたいかもしれません。データの挿入は完璧です。私はそれがforeachではないと思う。 – ashura91

0

ウェイ1

SELECT MAX(id) FROM tableName; 

ウェイ2

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

'MAX(id)'は常に最後に挿入されたIDですか? idの削除/変更があっても? – ashura91

+0

この場合、Way 2を使用する方が良いでしょう –

0

あなたはここで少し間違っています。 returnをコールすると、それ以上実行されません。

モデル:

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; 
    } 

} 

はコントローラー:

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

'$ newID = $ this-> MAdmin-> ins_assign_pic($ data);'はマスターに二重のデータを与えます。 '$ newID = $ this-> MAdmin-> ins_assign_pic();'を使うと、masterの中の一つのデータだけが挿入されます。なぜ?? – ashura91

+0

あなたの回答を表示してください。 –

+0

どのような応答?? – ashura91

0

あなたがテーブルから最大IDを取得できます。

select max(id) from table 
0

はmysqli_insert_id()関数のあなたです探しています。

+0

はい、しかし、私のコントローラで使用する変数を送信する方法 – ashura91

+0

返す$ this-> db-> insert_id(); IDを返します。次に、あなたはそれを次のようにすることができます:$ myid = myfunction();次に、挿入されたIDをvar $ myidに使用できます。 – Bernhard

関連する問題