如何将数据发送到具有相同用户ID的两个表作为主键?

时间:2013-12-04 20:05:38

标签: php html mysql sql

我是PHP的新手,我正在尝试创建一个注册页面。要注册,用户必须创建用户名,密码和电子邮件,这些用户名,密码和电子邮件将放入名为users的表中。

他们还输入地址详细信息,该详细信息放在名为customer_info的表中。

在两个表中,我创建了一个自动增量,主键称为“user_id”。

表单完成后会填写并输入数据,但数据不会被绑定,因此有两个user_id,一个位于users,一个位于customer_info

首先我创建已输入的值(来自帖子)并将它们分配给变量。然后我使用以下查询将变量放入我的表中:

$result = mysql_query(
    "INSERT INTO `users`(username, password, email) VALUES ('$value1', '$value2','$value3')"
);

$result = mysql_query(
    "INSERT INTO `customer_info`(firstname, lastname, b_add_num, b_add_road, b_add_town, b_add_pc, p_add_num, p_add_road, p_add_town, p_add_pc) VALUES ('$value4','$value5','$value6','$value7','$value8','$value9','$value10','$value11','$value12','$value13')"
);

我如何设置它以便为两个表创建一个用户ID(在数据集之间建立连接)?

我的查询中是否缺少某些内容,应该连接表格?

2 个答案:

答案 0 :(得分:3)

我只将USER_ID配置为Users表中的AUTO_INCREMENT列,首先将数据插入Users表,然后使用{{1获取插入的用户的ID在将数据插入mysql_insert_id ($connection_id);表时使用它。这样,您也可以利用MySQL的ID生成(序列)功能。

答案 1 :(得分:3)

在任何事情之前,你不应再使用mysql_ *扩展名了。转到PDOmysqli


您的技术会生成两个不同的唯一ID。关键是只有一个,因此它可以是唯一的,并链接有关该唯一ID的信息。

users表是具有唯一ID user_id的表,它是您的auto_increment列。 customer_info表还可以包含info_id唯一列,但必须包含user_id列,其中包含用户的user_id,将这些行链接在一起。

foreign key添加到表中也是一个很好的时刻,这样就不会损害数据的完整性。

所以在此查询之后:

$result = mysql_query(
    "INSERT INTO `users`(username, password, email) VALUES ('$value1', '$value2','$value3')"
);

获取插入ID:

$id = mysql_insert_id();

然后用它运行你的其他查询:

$result = mysql_query(
    "INSERT INTO `customer_info`(user_id,firstname, lastname, b_add_num, b_add_road, b_add_town, b_add_pc, p_add_num, p_add_road, p_add_town, p_add_pc) VALUES ('$id','$value4','$value5','$value6','$value7','$value8','$value9','$value10','$value11','$value12','$value13')"
);