2013-02-27 172 views
0

我有一個表單,其中包含員工個人信息。我更新表格,並將其插入名爲employee_info的表格中。它會更新表格的詳細信息並插入一個新ID(employee_id)。在我的數據庫中,我有另一個表department_info,相關的字段是department_id。這是PHP的標記,將數據插入到數據庫:插入新記錄時,從一個表插入另一個表

$sql_data_array = array('employee_firstname' => $employee_firstname); //other variables go here 

if (ACCOUNT_DOB == 'true') $sql_data_array['driver_dob'] = tep_date_raw($driver_dob); 

tep_db_perform(TABLE_EMPLOYEES, $sql_data_array); 

$employee_id = tep_db_insert_id(); 

我需要做的是,當表單更新和數據插入到employee_info表,我需要它插入一個新的ID爲employee_id(這已經發生),並且還要將department_id插入到employee_info表中。

department_id用於登錄,我想顯示屬於該部門的員工列表。任何人都可以告訴我我該怎麼做?

+0

我會推薦使用觸發器而不是在php中編寫它。我不會寫你的觸發器,但我只是給你一些考慮。 – Scotch 2013-02-27 16:37:56

+0

@Scotch,我認爲混合業務邏輯和數據庫是一個壞主意。我們應該儘可能簡單明瞭。如果您需要更改Oracle或NoSQL的MySQL數據庫,會發生什麼? – 2013-02-28 08:39:24

+0

將業務邏輯與數據庫混合是一個壞主意?那麼......觸發器是什麼?什麼是約束? – Scotch 2013-02-28 12:50:05

回答

2

當您使用PHP插入時,大多數實現返回所謂的最後一個插入ID。這是AUTO_INCREMENT列的值。

即使你的實現不支持它,應該有一個函數返回它。

編輯: 從你的更新,這似乎是osCommerce。你的代碼的問題是tep_db_perform方法用於插入一個或多個元素。如果插入2行,會發生什麼?但在簡單的情況下,使用tep_db_insert_id(),它應該返回最後的id。

+0

我已經包含了用於插入員工表的編碼,請問您能否顯示代碼,以獲得答案? – 2013-02-27 16:19:53

+0

我也更新了我的回覆:-) – 2013-02-27 16:26:29

0

php函數mysqli_insert_id檢索由前一個查詢(通常是INSERT)爲AUTO_INCREMENT列生成的ID。獲取此ID並在其他表中使用它。

相關問題