如何使用 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');" );