2012-07-26 79 views
0

我正在構建一個工作中的Web應用程序,並且我有一個表單,用戶可以在其中註冊某些類型的信息。在提交時將PHP/MySQL插入到多個數據表中

Username | Password | Company 

現在我不知道該如何處理這個。我想要的是,當用戶提交註冊表單時,用戶名,密碼和公司被寫入一個數據表(用戶),但因爲公司在用戶數據表中是外鍵引用,我需要將公司寫入單獨的數據表(公司)作爲主鍵(當然,用戶名可以寫成FK參考,因爲它是1 - 1關係)。

我不是在尋找你們的編碼解決方案,因爲我知道我的PHP和MYSQL,我只是在尋找一些僞代碼算法來獲得創意果汁!

編輯:我使用PostgreSQL不是MySQL,但我敢肯定有不同的端口號相差不大,小的語法變化

+0

MySQL和Postgres之間有很大的區別。對於後者,您可以通過數據修改CTE一步解決此問題 - 如[後續問題](http://stackoverflow.com/q/12095553/939860)中所示。 – 2012-08-23 22:41:01

回答

1

假設第一列是id

  1. 保存公司$mysqli->query("INSERT INTO company VALUES (NULL, '$company_name')";
  2. 獲得這個項目的ID。 $company_id = $mysqli->insert_id;
  3. 保存用戶與此ID $mysqli->query("INSERT INTO user VALUES (NULL, '$username', '$password', '$company_id')";
  4. 獲取用戶的id $user_id = $mysqli->insert_id;
  5. 更新公司與它:$mysqli->query("UPDATE company SET user_id = $user_id WHERE company_id = $company_id)";
+0

對不起,一家公司只有一名用戶,因爲該用戶是該公司員工提供有關其公司的信息。無論細節是1..1關係的兩種方式。 – WebDevDanno 2012-07-26 15:01:32

+0

什麼是PostGreSQL語法? $ mysqli是理論數據庫上的句柄嗎? – WebDevDanno 2012-07-26 15:04:46

+0

無論如何,我的解決方案將工作。但如果您還需要在'company'表中保存'user_id',您需要獲取在步驟3中創建的用戶標識,並使用此標識更新'company'表 – 2012-07-26 15:05:00

0

一些問題:

  • 爲什麼用戶:公司== 1 :1?如果我和同事加入您的網站,我們是否需要假裝在不同的地方工作?
  • 如果公司可以有多個員工,您將使用什麼樣的驗證來結合公司名稱的變體(例如,IBM和國際商業機器)?
  • 如果用戶失業,該怎麼辦?

如果公司是一個很好的方知數據,而不是需要有或事物斷數據,我可能會先註冊我的用戶。然後,當用戶登錄時,您可以嘮叨他們獲取更多信息。這具有使用戶註冊對用戶不那麼繁重的附加優點。

用例:

  • 用戶提交usernamepassword
  • FILTRE輸入壞的東西和驗證複製,適合
  • 保存到數據庫和檢索用戶PK
  • 負荷「附加信息'頁面並將會話變量設置爲「nag」標誌 -if用戶選擇不填寫add'l信息,nag標誌可以觸發提醒行爲
  • 添加自動完成對公司字段,以便用戶可以使用現有的公司表項
  • 過程的形式保存到數據庫
    • 要麼添加公司和準用戶
    • 或只是關聯用戶
  • 沒有設置會議老馬國旗讓你的網站不會繼續嘮叨
+0

我不能透露太多關於我作爲其政府項目工作的項目,但在我得到1..1關係的情況下工作。 – WebDevDanno 2012-07-26 15:42:58

+0

@DanielD夠公平的。我問了這些問題,因爲我有過很多次「誠實,只會有一次」的對話。通常幾個月後,有人會說「我怎麼不能...」。我發現設計數據庫通常更好,並且在PHP中實現1:1業務規則。 – dnagirl 2012-07-26 15:52:14

+0

是的,這是可以理解的,我完全同意只是希望我能解釋。 – WebDevDanno 2012-07-27 10:21:15

相關問題