mysql LAST_INSERT_ID无法通过php工作

mysql LAST_INSERT_ID无法通过php工作,php,mysql,transactions,last-insert-id,multi-query,Php,Mysql,Transactions,Last Insert Id,Multi Query,在这份工作中,我尝试了两种方法: 多重查询: $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

在这份工作中,我尝试了两种方法:

多重查询:

$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();
除了歌词表上的歌曲列,所有记录都记录得很好,该列为空值

有人能帮我吗


谢谢

每次查询之后都会逐个执行多个查询,因此LAST\n sert\u 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,因此它可以正常工作


干杯

欢迎来到堆栈溢出!您还没有显示表的定义,没有它很难给出一个好的答案。请看@jDoe如果这样做有效,请接受这个答案来结束您的问题。对不起,因为它已经过了一段时间,所以不让我这么做,就这么做吧!