2014-07-25 77 views
0

我在Drupal約db_select查詢一個問題:選擇最近一次插入與db_select

db_insert('CON_CON') 
    ->fields(array(
      'surname' => $form_state['values']['surname'], 
      'firstname' => $form_state['values']['firstname'], 

    ))->execute(); 
    $hasCONID = db_select('CON_CON', 'n') 
     ->fields('n',array('CONID')) 
     ->condition('surname', $form_state['values']['surname'], '=') 
     ->execute() 
     ->fetchfield() 



    db_insert('CASL_NEW') 
     ->fields(array(
      'CONID' => $hasCONID, 

    ))->execute(); 

這將返回一列,其中列姓形式的姓相匹配的CONID。但有可能會有重複的姓氏,所以我可以放入一個條件,返回最近插入到表中的插入?或者選擇在特定時間內完成的所有行?還是有另一種方法來確保它選擇最近的姓而不是另一個重複?

+1

不知道如何做到這一點在Drupal(您可能需要創建自己的功能擴展Drupal的功能),但你可以使用新的PDO'返回$ DB-> lastInsertId ('yourIdColumn');'在插入函數結束時返回最後一個ID ...然後您可以使用它作爲您的搜索查詢的參數 – Kinnectus

回答

-1

使用try db_last_insert_id

db_query("INSERT INTO {table}(name) VALUES ('value')"); 
echo db_last_insert_id('table_name', 'name'); 
+0

db_last_insert_id()在Drupal 7中被移除,並且此問題涉及只有Drupal 7.我無法想象爲什麼這被接受,這是完全錯誤的。 – Clive