2013-02-27 174 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并在其他表中使用它。

相关问题