我有两个表,用户和syssla,其中syssla_id是users(syssla_id2)
中的外键。
create table syssla(
syssla_id int auto_increment,
Uppgift varchar (255),
Information text,
Tid varchar(100),
primary key(syssla_id)
)engine=innodb;
create table users(
user_id int ,
username varchar (50),
user_password varchar (50),
Namn varchar(100),
syssla_id2 int,
primary key(user_id),
foreign key(syssla_id2) references syssla(syssla_id)
)engine=innodb;
我想在php
中插入一个表单。但是,如何才能将外键同时插入到另一个table(users)
中的特定用户?
您应该编写一个存储过程,该过程首先插入syssla
,然后使用LAST_INSERT_ID()
函数获取id,然后将新记录插入users
您可以执行以下操作:
// you start a mysql transaction
$mysqli->begin_transaction();
// execute your first query
$mysqli->query(""); // Insert query here
$new_id = $mysqli->insert_id;
$mysqli->query(""); // second query here using the $new_id
$mysqli->commit();
$mysqli->close();
如果第二个查询由于任何原因失败,它将取消第一个查询,这将是前所未有的,而且启动事务可以防止其他查询覆盖您上次插入的id。因此,您永远不会因为其他用户执行的其他查询而获得错误的id。
ps。尝试使用准备好的语句,它们比手动转义变量更好地保护您免受sql注入的影响。