gpt4 book ai didi

php - mysql LAST_INSERT_ID 无法通过 php 工作

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

我尝试了两种方法来完成这项工作:

多查询:

$sql = "START TRANSACTION; INSERT INTO songs (title, disco, deleted) VALUES ('".$titol."', '".$codi."', '0'); SET @last_id = LAST_INSERT_ID(); INSERT INTO lyrics (`lyricsOri`, `lyricsTra`, `song`, `deleted`) VALUES ('".$lyricsO."', '".$lyricsT."', @last_id, 0); COMMIT;";

connection()->multi_query($sql);

和交易:

    connection()->begin_transaction(MYSQLI_TRANS_START_READ_ONLY);
connection()->query("START TRANSACTION;");
connection()->query("INSERT INTO songs (title, disco, deleted) VALUES ('".$titol."', '".$codi."', '0');");
connection()->query("SET @last_id = LAST_INSERT_ID();");
connection()->query("INSERT INTO lyrics (`lyricsOri`, `lyricsTra`, `song`, `deleted`) VALUES ('".$lyricsO."', '".$lyricsT."', @last_id, 0);");
connection()->query("COMMIT;");
connection()->commit();
connection()->close();

除了歌词表中的歌曲列取NULL值外,所有记录都记录良好。

谁能帮我解决这个问题吗?

谢谢!

最佳答案

这多个查询是一个接一个地执行的,因此 LAST_NSERT_ID() 没有任何作用。

您可以结合使用这两种技术来达到您的需求:

        connection()->begin_transaction(MYSQLI_TRANS_START_READ_ONLY);
connection()->query("START TRANSACTION;");
connection()->multi_query("INSERT INTO songs (title, disco, deleted) VALUES ('".$titol."', '".$codi."', '0');SET @last_id = LAST_INSERT_ID();INSERT INTO lyrics (`lyricsOri`, `lyricsTra`, `song`, `deleted`) VALUES ('".$lyricsO."', '".$lyricsT."', @last_id, 0);");
connection()->query("COMMIT;");
connection()->commit();
connection()->close();

现在,var 已在同一查询执行流上声明和使用,因此它可以正常工作。

干杯!

关于php - mysql LAST_INSERT_ID 无法通过 php 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51269040/

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