2010-09-30 161 views
1

我在我的系統中有這個問題,我需要註冊一個病人到系統,患者reference_number用於在醫院預約。我得到的問題是,當病人登記到系統同時進行預約時,我需要更新兩張表格,病人表格和預約表格,我必須從患者表格中提取reference_number並將其輸入到預約table.reference數字必須從數據庫中提取出來,新的數字應該比舊數字增加一個。如何做這個傢伙?我對此感到困惑。 :(如何同時向兩個表中插入數據?

我使用笨,PHP和MySQL

問候, Rangana develping系統

+0

你使用什麼樣的數據庫庫來訪問mysql數據庫,普通的php mysql_ *函數,Doctrine還是別的? – thomasmalt 2010-09-30 09:01:10

+0

給出正確答案有點難,因爲你的解釋有點混亂。你能詳細說明一下嗎?是使用auto_increment定義的表公鑰,還是需要手動執行? – thomasmalt 2010-09-30 09:02:45

+0

@thomasmalt:我使用codeigniter中的活動記錄來訪問數據庫,我有病人表的reference_number作爲自動增量,也保留表主鍵也自動增加。我必須拿起病牀的主鑰匙並將其放入預約表中進行預約。 – 2010-09-30 09:03:53

回答

1

我想你可以很容易地用兩個INSERT語句做一前一後的權利和使用mysql_insert_id來。取上一個查詢的ID,但是這可能並不適合你,如果你的表的定義不同:

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

通用技術應該獨立於ORM框架而有效。 – thomasmalt 2010-09-30 09:11:24

1

繼續模糊的信息,你可以像下面這樣做。

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

我希望隱約地爲你覆蓋它。

+0

使用$ this-> db-> insert_id()並不是太冒險,因爲我們都知道這會得到數據庫中最後插入的id?如果有兩個用戶同時進行相同的過程會怎麼樣?我們應該總是考慮這種情況。 – Orvyl 2013-06-03 05:36:26

0

thomasmalt,JonRed和詹姆斯·諾曼感謝名單傢伙有很大的幫助

這是代碼

$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);

$數據和$ visit_data是兩個數組包含插入數據,$ visit_data包含$ lastID

希望你們也可以在將來使用這個:)

相關問題