SQL,如何获取之前INSERT的自动ID?
SQL, how to get the automated ID from the previous INSERT?
我正在使用 PHP
和 SQL
并尝试在注册时将用户数据插入到两个表中。首先在 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 的正确方法是什么?
- 运行 你的陈述是分开的。你 运行 你插入你的
user_table
,然后抓住 id
然后 运行 你插入你的 character_table
- 您可以在 运行 插入后使用
mysql_insert_id
获取 id
。 Note that on the php webpage 详细说明了已弃用的 mysql_insert_id
函数,所有 mysql*
函数也是如此。这导致...
- 看在一切神圣的份上,不要将您的变量直接连接到您的 INSERT 语句。如果您还没有切换到 mysqli* 函数或 PDO,并使用准备好的语句(参数化查询)。如果您使用
mysql
构建应用程序,则意味着您没有参数化查询,这意味着您面临 sql 注入攻击的巨大风险。
If/when 你切换到 mysqli 或 PDO 函数你会发现等效的 mysqli_insert_id()
(或 PDO::lastInsertID()
)函数
我正在使用 PHP
和 SQL
并尝试在注册时将用户数据插入到两个表中。首先在 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 的正确方法是什么?
- 运行 你的陈述是分开的。你 运行 你插入你的
user_table
,然后抓住id
然后 运行 你插入你的character_table
- 您可以在 运行 插入后使用
mysql_insert_id
获取id
。 Note that on the php webpage 详细说明了已弃用的mysql_insert_id
函数,所有mysql*
函数也是如此。这导致... - 看在一切神圣的份上,不要将您的变量直接连接到您的 INSERT 语句。如果您还没有切换到 mysqli* 函数或 PDO,并使用准备好的语句(参数化查询)。如果您使用
mysql
构建应用程序,则意味着您没有参数化查询,这意味着您面临 sql 注入攻击的巨大风险。
If/when 你切换到 mysqli 或 PDO 函数你会发现等效的 mysqli_insert_id()
(或 PDO::lastInsertID()
)函数