2014-04-28 76 views
-1

我有2個表,PHP,SQL將值插入鏈接在一起的表中?

表用戶:
Columns-> ID,姓名,年齡,職務,部門,電話

表電話: 列ID,U_ID,u_phonetype(外鍵是用戶。 ID與刪除級聯和更新級聯)。

我要到SQL從電話表u_phonetype執行此INSERT:

INSERT INTO `user` (`id`, `name`, `age`, `position`, `department`, 
`phone`) values ("'.$name.'", "'.$age.'", "'.$position.'", "'.$department.'", "'.$phone.'") ; 

如何插入的u_phonetype值這個SQL?我會執行JOIN嗎?

+0

其中RDBMS,並澄清你的問題。 – Strawberry

+0

只要定期使用mySQL – Noobtastic

+0

您不能使用INSERT語句加入,您必須添加到用戶表中,獲取用戶標識,然後插入到電話表中。 – DWolf

回答

1

使用PHP你只需要使用2/3查詢來完成這件事。

// insert your user 
INSERT INTO users (columns) VALUES(vals); 

// get the last id 
SELECT id FROM users order by id desc limit 1 

// this is also work if you just do 
SELECT id FROM users where name='name' and age='age' "and whatever values you have"; 

// then insert into phone with the id retrieved from above 
INSERT INTO Phone (columns) VALUES(vals); 

3個步驟,但相同的連接下,它應該是確定

+0

這有一個競爭條件。如果你碰巧做了一個INSERT,然後是另一個INSERT,然後是第一個線程的select,它將以第二個用戶的ID而不是第一個爲結尾。這可以通過事務或通過改變SELECT中的'WHERE name ='name''來緩解。 – CanSpice

+0

如果表中有多個John Smith,你也會遇到問題。根據我對DBA的經驗,比起使用安全數據抓取其他人的user_id更好。 – DWolf

+0

這是不明智的,無益的。 – Strawberry

0

什麼


LAST_INSERT_ID(); 

INSERT INTO table1 (column1,column2) VALUES ('test', 1); 
SET @last_id_in_table1 = LAST_INSERT_ID(); 
INSERT INTO table2 (column3,column4,column5) VALUES (@last_id_in_table1, 2, 3);