2013-04-25 110 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