gpt4 book ai didi

mysql - 使用事务合并两个插入查询。但是我需要获取第一个插入的行 ID

转载 作者:行者123 更新时间:2023-11-29 14:14:39 25 4
gpt4 key购买 nike

$db->query("INSERT into `users` (username, password, email)
VALUES ('$username', '$hashpassword', '$email')");

$userid = mysqli_insert_id($db->link);

$db->query("INSERT into `users logins` (userid, token, ip)
VALUES ('$userid', '$token', '$ip')");

以上是旧代码。以下是我的新内容:

$db->query("BEGIN TRANSACTION;
INSERT into `users` (username, password, email)
VALUES ('$username', '$hashpassword', '$email');

[here I need to get the row ID of the above insert]

INSERT into `users logins` (userid, token, ip)
VALUES ('$userid', '$token', '$ip')
COMMIT;");

如何获取第一个插入行 ID 并将其用于第二个插入?

最佳答案

使用LAST_INSERT_ID()

...

INSERT into `users logins` (userid, token, ip)
VALUES (LAST_INSERT_ID(), '$token', '$ip')

...

或者如何创建存储过程

DELIMITER $$
CREATE Procedure InsertRecord
(
IN _userName VARCHAR(50),
IN _passWord VARCHAR(50),
IN _email VARCHAR(50),
IN _token VARCHAR(50),
IN _ip VARCHAR(50)
)
BEGIN
DECLARE Last_ID INT;

INSERT into `users` (username, password, email)
VALUES (_userName, _passWord, _email);

SET Last_ID = LAST_INSERT_ID();

INSERT into `users logins` (userid, token, ip)
VALUES (LAST_INSERT_ID(), _token, _ip);

SELECT Last_ID;
END $$
DELIMITER ;

关于mysql - 使用事务合并两个插入查询。但是我需要获取第一个插入的行 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12870843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com