我已经制作了2个单独的表,即userlogin和userprofile,其中包含以下列。
userlogin:
id
uname
pass
userprofile:
user_id(Foreign key)
name
gender
aboutme
由于我将在注册时获取一些userprofile数据,我想知道将userpdin表中新生成的id提供给userprofile表的最佳方法是什么。
我想过将两个插入查询一个接一个地插入,但是如果多个用户同时注册并且一个用户登录与另一个用户配置文件一起保存会怎么样。
我是否应该保存使用用户名密钥输入的个人资料?
答案 0 :(得分:0)
如果您担心“同时”注册,可以使用mysql事务。
start transaction;
然后commit;
实施例: http://www.mysqltutorial.org/mysql-transaction.aspx
对于使用外键进行插入,请参阅此问题:https://dba.stackexchange.com/questions/46410/how-do-i-insert-a-row-which-contains-a-foreign-key
答案 1 :(得分:0)
使用交易很好,但这里可能还有另一件事要指出。
如果id
是AUTO_INCREMENT
,那么
INSERT INTO userlogin (uname, pass) VALUES (..., ...)
- 未指定id
。LAST_INSERT_ID()
- 这会为您提供值,并且它特定于您的连接。没有其他联系可以潜入并抓住你的身份。INSERT INTO userprofile (user_id, ...) VALUES ($id, ...)
有没有理由不合并这两张桌子? 1:1的关系很少有用。正如所讨论的那样here。