SQL,如何获取之前INSERT的自动ID?

SQL, how to get the automated ID from the previous INSERT?

我正在使用 PHPSQL 并尝试在注册时将用户数据插入到两个表中。首先在 user_table 中,然后在 character_table 中。我正在使用自动生成 user_id 到 link 表,需要从第一个 INSERT (into user_table) 中获取 user_id 的值,然后将其添加到 INSERT (into user_table) 中的列=15=].

我尝试了几种方法,到此为止($username、$email、$password 和 $character 已在上面定义);

$sql = "INSERT INTO 
user_table (id, username, email, password)
VALUES ('NULL', '".$username."', '".$email."', '".$password."')

INSERT INTO
character_table (name, id)
VALUES ('".$character."', 'LAST_INSERT_ID()')";"

我希望 user_table 中的 "id" 与插入 character_table 的 "id" 相匹配。

当我运行上面的时候,似乎什么都没有发生。以前的尝试我总是以 id = 0 结束。我可以从第一个 INSERT 中获取 ID 的正确方法是什么?

  1. 运行 你的陈述是分开的。你 运行 你插入你的 user_table,然后抓住 id 然后 运行 你插入你的 character_table
  2. 您可以在 运行 插入后使用 mysql_insert_id 获取 idNote that on the php webpage 详细说明了已弃用的 mysql_insert_id 函数,所有 mysql* 函数也是如此。这导致...
  3. 看在一切神圣的份上,不要将您的变量直接连接到您的 INSERT 语句。如果您还没有切换到 mysqli* 函数或 PDO,并使用准备好的语句(参数化查询)。如果您使用 mysql 构建应用程序,则意味着您没有参数化查询,这意味着您面临 sql 注入攻击的巨大风险。

If/when 你切换到 mysqli 或 PDO 函数你会发现等效的 mysqli_insert_id()(或 PDO::lastInsertID())函数