如何一对一匹配 USER table 和 USERINFO table 记录?

How do I match up USER table and USERINFO table records one for one?

我有一个 UserLogin table 供用户使用用户名和密码登录。我还有一个 UserInfo table 包含地址、Phone 数字和其他 30 个列中的信息。

在 UserLogin table 中创建用户时,我想将他们的 UserLogin 行与 UserInfo table 中的一行匹配,以便我可以将用户详细信息存储在 UserInfo table。我的目标是让这些 table 具有匹配的主键 ID,以便 UserLoginID = '2493' 和 UserInfoID = '2493'。这样,tables 将逐行匹配,一对一,努力使用户个人资料信息始终与他们的 UserLogin 帐户匹配。

完成此任务的最佳方法(最佳实践)是什么?

用户登录Table
- 用户 ID(主键)(Auto_Increment)
- 用户名
- 密码
- 电子邮件
- 用户访问

用户信息Table
- UserInfoID(主键)(Auto_Increment)
- 名字
- 姓氏
- 地址
- Phone数量

创建新的 UserID 时,我还希望创建一个 UserInfoID 并将其绑定到 UserID,这样当他们登录并输入个人资料详细信息时,它将进入 UserInfo table。

感谢经典编码员!这就是我最终得到的结果,它完美地工作:

$stmt = $db->prepare('INSERT INTO UserLogin (username,password,email) 
VALUES (:username, :password, :email)');

$stmt->execute(array(
':username' => $username, 
':password' => $hashedpassword, 
':email' => $email  ));

$id = $db->lastInsertId('adminID');

include('includes/database.php');

$FirstName=$_POST['FirstName']; 
$LastName=$_POST['LastName'];

$mysqli->query("INSERT INTO UserInfo(UserInfoID, FirstName, LastName) 
VALUES ('$id', '$FirstName', '$LastName')");

有一些简单的方法可以解决这个问题:

  • 将两个 table 合二为一。
  • 将 userID 字段添加到 UserInfo table。 (注意不要创建多个具有相同 userID 值的 UserInfo 记录,也许为了安全起见使该列唯一)。

我在将 UserInfoID 字段添加到用户中时看不到任何值 table。获得用户的用户 ID 后,您可以轻松找到 UserInfo 记录。

有两种解决方案:

1) 当您插入第一个 table 的记录时,您可以获得最后插入的 ID,并将第二个 table UserInfoID 保存为从第一个 table 获取。

2) 您可以在第二个 table 中创建一个新字段,即与第一个 table(用户 ID)相关。当您在第二个 table 中插入记录时,您可以将第一个 table 的最后插入的 ID 添加到第二个 table 列中,即(用户 ID)。 公式为:

mysql_insert_id();