我是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(在数据集之间建立连接)?
我的查询中是否缺少某些内容,应该连接表格?
答案 0 :(得分:3)
我只将USER_ID
配置为Users
表中的AUTO_INCREMENT列,首先将数据插入Users
表,然后使用{{1获取插入的用户的ID在将数据插入mysql_insert_id ($connection_id);
表时使用它。这样,您也可以利用MySQL的ID生成(序列)功能。
答案 1 :(得分:3)
在任何事情之前,你不应再使用mysql_ *扩展名了。转到PDO或mysqli
您的技术会生成两个不同的唯一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')"
);