2012-03-10 79 views
0

對於其中用戶輸入他們的聯繫信息和他們的用戶名和口令的註冊頁面。我有兩個表,一個是與一個ForeignKey稱爲CON​​TACTINFO和,我想與用戶表加入聯繫人信息表中的用戶名和密碼?外國和主鍵都應該設置爲自動增量嗎?我需要什麼類型的聯接?

感謝

回答

2

都設置主鍵是自動遞增。從用戶表添加外鍵到聯繫人信息表和完成。外鍵是從未自動遞增,畢竟他們是爲了另一個表是指的值。

請注意,如果您使用的是像Doctrine這樣的ORM,usercontactinformation之間的關係將自動爲您處理。否則,你應該先插入您的聯繫方式,得到其生成的主鍵(通過mysql_insert_id例如),然後執行您的插入到user表。

+0

嗨感謝答覆,這正是我已經。然而,當我將數據添加到數據庫時,我的困惑來自於此。我會插入到users表的用戶名和密碼,但那麼我如何鏈接該行添加名稱地址電子郵件等 – Biscuit128 2012-03-10 11:43:39

+0

添加一些信息給我的答案。 – Perception 2012-03-10 12:04:38

+0

當你說我需要得到生成的密鑰 - 會有一種方法來始終確保我得到正確的密鑰退出? – Biscuit128 2012-03-10 12:21:07

1

用戶的表應該有:

  • 用戶ID(初級,自動增量)
  • 用戶名
  • 密碼

其他表有:

  • INFOID(初級,自動增量)
  • 用戶ID(這將在此行鏈接到其他表)
  • 您的信息...

你應該使用 「左連接」

的LEFT JOIN關鍵字返回所有行左表(table_name1),即使是在正確的表(table_name2)不匹配。 (w3schools)

所以我們有一個用戶表作爲我們的「左表」和信息作爲「右表」。用戶可能還沒有設置信息,但他/她有一個帳戶。所以我們有一個帳戶(「左」),但不一定信息(「右」) - 的LEFT JOIN聽起來像是加入作業

和你的SQL應該大致樣子

SELECT "columns" FROM table1 
LEFT JOIN table2 ON table1.userid = table2.userid 

//where "columns" are the columns you want to get 
//from the tables in "table.column" notation like: user.username or info.mobile 
相關問題