如何使用 SET 在 mysql 中创建一个 LAST_INSERT_ID 用户自定义变量?
How do I use SET to create a LAST_INSERT_ID user-defined variables in mysql?
我需要将值插入多个 table,其中第一个 table(用户)的主键(id
)是外键(user_id
) 随后 tables(电子邮件等)。
我在 MySQL Workbench 中制定了以下查询,在那里工作得很好。但是,当我 运行 它在我正在开发的网站表单的上下文中时,我不断收到该行的语法错误消息:SET @nameID = LAST_INSERT_ID();
INSERT INTO users (first_name, last_name)
VALUES('John', 'Doe');
SET @userID = LAST_INSERT_ID();
INSERT INTO email (user_id, email)
VALUES(@userID,'johndoe@email.com');
INSERT INTO phone_number (user_id, phone_number)
VALUES(@userID, 4546254758);
我花了一些时间尝试找出问题所在,但到目前为止还没有得到答案。任何帮助将不胜感激。
编辑: 更新代码以表明 'multiple' 我的意思是超过两个。
你不需要用户变量。如果您 运行 在同一个数据库会话中顺序执行这两个查询,您可以这样做:
INSERT INTO users (first_name, last_name)
VALUES('John', 'Doe');
INSERT INTO email (user_id, email)
VALUES(LAST_INSERT_ID(),'johndoe@email.com');
不要运行所有查询都一次性完成,
你应该 运行 一个接一个,然后它将正常工作 php ,
像这样尝试
$mysqli = new mysqli('localhost', 'root', '', 'test');
$mysqli->query("INSERT INTO users (first_name, last_name)
VALUES('John8', 'Doe');" );
$mysqli->query('SET @userID = LAST_INSERT_ID();' );
$mysqli->query("INSERT INTO email (user_id,email) VALUES ( @userID
,'johndoe8@email.com');" );
我需要将值插入多个 table,其中第一个 table(用户)的主键(id
)是外键(user_id
) 随后 tables(电子邮件等)。
我在 MySQL Workbench 中制定了以下查询,在那里工作得很好。但是,当我 运行 它在我正在开发的网站表单的上下文中时,我不断收到该行的语法错误消息:SET @nameID = LAST_INSERT_ID();
INSERT INTO users (first_name, last_name)
VALUES('John', 'Doe');
SET @userID = LAST_INSERT_ID();
INSERT INTO email (user_id, email)
VALUES(@userID,'johndoe@email.com');
INSERT INTO phone_number (user_id, phone_number)
VALUES(@userID, 4546254758);
我花了一些时间尝试找出问题所在,但到目前为止还没有得到答案。任何帮助将不胜感激。
编辑: 更新代码以表明 'multiple' 我的意思是超过两个。
你不需要用户变量。如果您 运行 在同一个数据库会话中顺序执行这两个查询,您可以这样做:
INSERT INTO users (first_name, last_name)
VALUES('John', 'Doe');
INSERT INTO email (user_id, email)
VALUES(LAST_INSERT_ID(),'johndoe@email.com');
不要运行所有查询都一次性完成, 你应该 运行 一个接一个,然后它将正常工作 php , 像这样尝试
$mysqli = new mysqli('localhost', 'root', '', 'test');
$mysqli->query("INSERT INTO users (first_name, last_name)
VALUES('John8', 'Doe');" );
$mysqli->query('SET @userID = LAST_INSERT_ID();' );
$mysqli->query("INSERT INTO email (user_id,email) VALUES ( @userID
,'johndoe8@email.com');" );