我对PHP完全陌生,我正在尝试创建一个注册页面。要注册,用户必须创建用户名、密码、电子邮件,并将其放入一个名为users的表中。
它们还输入地址详细信息,将其放入一个名为customer_info的表中。
在这两个表中,我都创建了一个自动增量,名为“user_id”的主键。
当表单完成后,它会填写并输入数据,但是数据没有带状,因此有两个user_id,一个在users中,一个在customer_info中。
首先,我创建已经输入的值(来自post),并将它们赋值给变量。然后使用以下查询将这些变量放入表中:
$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 (在数据集之间建立连接)?
我的查询中是否缺少一些应该连接表的内容?
发布于 2013-12-04 21:55:16
在之前,您不应该再使用mysql_*扩展了。前往PDO或米斯里
您的技术生成两个不同的唯一ids。关键是只有一个,这样它就可以是唯一的,并链接有关该唯一id的信息。
users表具有唯一的id user_id,这是您的auto_increment列。customer_info表也可以有一个info_id唯一列,但必须包含一个user_id列,该列将包含用户的user_id,将这些行链接到一起。
将外键添加到表中也是一个很好的时刻,这样数据的完整性就不会受到损害。
因此,在这个查询之后:
$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')"
);发布于 2013-12-04 20:14:33
我将USER_ID配置为AUTO_INCREMENT列,仅在Users表中,首先将数据插入Users表,然后获取插入用户的ID,使用mysql_insert_id ($connection_id);并在将数据插入Customer_Info表时使用该ID。这样,您还可以利用MySQL的ID生成(序列)特性。
https://stackoverflow.com/questions/20384834
复制相似问题