如何同时向两个表插入数据?

时间:2010-09-30 08:57:50

标签: php mysql codeigniter

我的系统中存在此问题,我需要将患者注册到系统,患者reference_number用于在医院进行预约。我得到的问题是,当患者在系统中注册同时进行预约时,我需要更新两个表,患者表和预约表,我必须从患者表中取出reference_number并将其输入预约必须从数据库中获取table.reference数字,新的数字应该是旧数据库的一个增量。怎么做这个家伙?我对此感到困惑。 :(

我正在使用codeigniter,php和mysql

开发系统

的问候, 兰加纳

4 个答案:

答案 0 :(得分:1)

我认为您可以轻松地使用两个插入语句来执行此操作并使用mysql_insert_id来获取上一个查询的ID。但是,如果您的表的定义不同,这可能对您不起作用:

mysql_query('INSERT INTO patients [...]');
$patientId = mysql_insert_id();
mysql_query('INSERT INTO reservations [...]');

答案 1 :(得分:1)

今天早上我的时间有点紧张,请原谅我,如果这不是一个更全面的解释。我对codeigniter也一无所知,所以希望它确实支持存储过程。

在MySQL中有一个LAST_INSERT_ID()函数(参见http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id

您应该能够在存储过程中使用它来使用第一个表中的标识更新第二个表。

希望有所帮助。

答案 2 :(得分:1)

根据模糊的信息,您可以像下面这样做。

$this->db->insert('patients_records_tbl', $data);
$last_id = $this->db->insert_id();
$this->db->insert('other_tbl', array('patient_id' => $last_id));

我希望隐约适合你。

答案 3 :(得分:0)

thomasmalt,JonRed和James Norman感谢他们的帮助

这是代码

$this->db->insert('patient',$data);

$sql = "SELECT LAST_INSERT_ID()";
$query = mysql_query($sql);
  if ($query) {
    $row = mysql_fetch_row($query);
    $lastID = $row[0];
 }

$this->db->insert('visit',$visit_data);

$ data和$ visit_data是包含插入数据的两个数组,$ visit_data包含$ lastID

希望你们将来也可以使用它:)