我在我的系統中有這個問題,我需要註冊一個病人到系統,患者reference_number用於在醫院預約。我得到的問題是,當病人登記到系統同時進行預約時,我需要更新兩張表格,病人表格和預約表格,我必須從患者表格中提取reference_number並將其輸入到預約table.reference數字必須從數據庫中提取出來,新的數字應該比舊數字增加一個。如何做這個傢伙?我對此感到困惑。 :(如何同時向兩個表中插入數據?
我使用笨,PHP和MySQL
問候, Rangana develping系統
我在我的系統中有這個問題,我需要註冊一個病人到系統,患者reference_number用於在醫院預約。我得到的問題是,當病人登記到系統同時進行預約時,我需要更新兩張表格,病人表格和預約表格,我必須從患者表格中提取reference_number並將其輸入到預約table.reference數字必須從數據庫中提取出來,新的數字應該比舊數字增加一個。如何做這個傢伙?我對此感到困惑。 :(如何同時向兩個表中插入數據?
我使用笨,PHP和MySQL
問候, Rangana develping系統
我想你可以很容易地用兩個INSERT語句做一前一後的權利和使用mysql_insert_id來。取上一個查詢的ID,但是這可能並不適合你,如果你的表的定義不同:
mysql_query('INSERT INTO patients [...]');
$patientId = mysql_insert_id();
mysql_query('INSERT INTO reservations [...]');
通用技術應該獨立於ORM框架而有效。 – thomasmalt 2010-09-30 09:11:24
我有點今早推時間,所以請原諒我,如果這不是一個fulle解釋。我對codeigniter也一無所知,所以希望它支持存儲過程。
在MySQL中有一個LAST_INSERT_ID()函數(見http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id)
您應該能夠使用這個存儲過程從第一身份來更新第二個表。
希望有所幫助。
繼續模糊的信息,你可以像下面這樣做。
$this->db->insert('patients_records_tbl', $data);
$last_id = $this->db->insert_id();
$this->db->insert('other_tbl', array('patient_id' => $last_id));
我希望隱約地爲你覆蓋它。
使用$ this-> db-> insert_id()並不是太冒險,因爲我們都知道這會得到數據庫中最後插入的id?如果有兩個用戶同時進行相同的過程會怎麼樣?我們應該總是考慮這種情況。 – Orvyl 2013-06-03 05:36:26
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
希望你們也可以在將來使用這個:)
你使用什麼樣的數據庫庫來訪問mysql數據庫,普通的php mysql_ *函數,Doctrine還是別的? – thomasmalt 2010-09-30 09:01:10
給出正確答案有點難,因爲你的解釋有點混亂。你能詳細說明一下嗎?是使用auto_increment定義的表公鑰,還是需要手動執行? – thomasmalt 2010-09-30 09:02:45
@thomasmalt:我使用codeigniter中的活動記錄來訪問數據庫,我有病人表的reference_number作爲自動增量,也保留表主鍵也自動增加。我必須拿起病牀的主鑰匙並將其放入預約表中進行預約。 – 2010-09-30 09:03:53