2017-08-28 29 views
-1

我已經制作了2個單獨的表,即userlogin和userprofile以及以下列。SQL - 將數據插入父表和父表中的數據一起使用來自父表的屬性

userlogin: 
    id 
    uname 
    pass 

userprofile: 
    user_id(Foreign key) 
    name 
    gender 
    aboutme 

因爲我會採取一些在註冊我想知道什麼是給從用戶登陸表新生成的ID在USERPROFILE表的最佳途徑USERPROFILE數據。

我想兩個插入查詢都是一個接一個的,但如果多個用戶同時註冊並且一個用戶登錄與另一個用戶配置文件一起保存會怎麼樣。

我應該改爲保存配置文件外鍵用用戶名?

+0

可能的重複:https://dba.stackexchange.com/questions/46410/how-do-i-insert-a-row-which-contains-a-foreign-key – kenfire

+0

不可能是重複的 - last_insert_id(),而不是FK,似乎是真正的問題。 –

+0

@kenfire我讀了它,但我想last_insert_id似乎更好地回答它。謝謝反正。 – reevkandari

回答

0

使用事務是好的,但有可能是另一件事在這裏指出。

如果idAUTO_INCREMENT,然後

  1. INSERT INTO userlogin (uname, pass) VALUES (..., ...) - 沒有指定id
  2. 獲取LAST_INSERT_ID() - 這給你的價值,它是特定於你的連接。這是沒有其他連接可以潛入並獲得你的ID。
  3. 用做INSERT INTO userprofile (user_id, ...) VALUES ($id, ...)

該值是有一些理由不合並兩個表? 1:1關係很少有用。如討論here

+0

太棒了.. last_insert_id()就是我正在尋找的東西。我試圖保持一些原子的東西,userlogin表會有很多安全的東西,如最後生成的otp,acount狀態等。 而配置文件部分將有超過10個字段左右..所以我決定也許最好保持結構清潔。 儘管感謝您的建議。 last_insert_id很棒,將在我的PDO上使用它作爲'$ last_id = $ conn-> lastInsertId(); ' – reevkandari

+0

好。每個API都有自己的重要功能拼寫。 –

相關問題