我是 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(在数据集之间建立连接)?
我的查询中是否缺少应该连接表的内容?
最佳答案
在此之前,您不应该再使用 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')"
);
关于php - 如何将数据发送到具有相同用户ID作为主键的两个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20384834/