2013-04-25 112 views
0

我有一個腳本,它將一個新用戶添加到數據庫並將它們存儲在用戶表中。我還有一份合同表(一份合同清單)和一份用戶對合同的查詢/鏈接表。PHP/SQL將用戶標識添加到新用戶的查找表中

我想知道在合約表中添加新用戶的最佳方式,但您不知道他們將獲得的唯一ID是什麼?

實施例:

步驟1 - 註冊表單具有正常的用戶輸入,用戶名,密碼和ECT的數複選框合同(所有合同具有唯一的ID也)。

第2步 - 提交表單並將用戶詳細信息添加到用戶表中,併爲該新用戶生成唯一標識。

第3步 - 使用所選合同的唯一ID和新用戶的唯一ID將步驟1中選擇的合同插入到users_contracts表中。

這是我有一個大腦塊。我如何知道新用戶唯一ID是什麼?

我現在想的唯一方法是正常插入新用戶,然後對新用戶名執行另一個查詢,並從數據庫中提取新用戶標識,然後將其插入users_contracts表的第三個查詢。

喜歡的東西:

INSERT INTO `users` _POST DATA FROM FORM 

然後獲得一個變量的上方插入用戶和存儲:

SELECT FROM users _POST USERNAME 

然後將其添加到users_contracts表:

INSERT INTO users_contracts _POST contracts and the above created variable for the users ID 

SORRY應該提及使用PDO進行插入和所有數據庫活動。

+0

用戶名是「auto_increment」號碼嗎? – 2013-04-25 15:17:37

+0

是@Kacey,這是正確的 – twigg 2013-04-25 15:31:10

回答

0

運行用戶插入查詢後,運行:

$userId = mysql_insert_id(); 

返回先前插入行的ID。

編輯:由於有人會提及它,你應該實際使用mysqli_insert_id(),因爲mysql_insert_id()和其他MySQL(而不是MySQLi)最終將被棄用。

+0

@wumm很明顯,他顯然已經有了一個連接,因爲他插入了新的行。我不需要爲他重新創建他的整個連接過程。他已經擁有了控制權。這就是爲什麼我說「在插入查詢後運行」,天才。請學會閱讀。 – 2013-04-25 15:21:11

+0

@wumm它和你的代碼完全一樣。 mysql_insert_id()不需要連接鏈接,並且我沒有完全集成到他的連接中提到了mysqli_insert_id(),因爲我再也不需要爲他重新創建輪子,並且他可以研究他的mysqli函數擁有。我的代碼是完全正確的。不要做屁股。 – 2013-04-25 15:24:08

+0

對不起應該提到即時通訊使用所有數據庫交互的PDO,我想使用lastInsertId是PDO的替代品,但我認爲這是看不起,是不好的做法?我可能會誤會 – twigg 2013-04-25 15:28:00