PHP/MYSQL如何获取事务中的最后一个插入id

PHP/MYSQL如何获取事务中的最后一个插入id,php,mysql,transactions,lastinsertid,Php,Mysql,Transactions,Lastinsertid,我有两张MySQL表 表#1-集装箱: container_id INT (PK AI) start_time DATETIME 表2-预订 reservation_id INT (PK AI) reservation_time DATETIME container_id INT (FK) PHP代码: mysqli_query($dbc,'SET AUTOCOMMIT=0'); mysqli_query($dbc,'START TRANSACTION'); $q1 = "INSERT

我有两张MySQL表

表#1-集装箱:

container_id INT (PK AI)
start_time DATETIME
表2-预订

reservation_id INT (PK AI) 
reservation_time DATETIME
container_id INT (FK)
PHP代码:

mysqli_query($dbc,'SET AUTOCOMMIT=0');
mysqli_query($dbc,'START TRANSACTION');

$q1 = "INSERT INTO container (start_time) VALUES
      ('2012-07-03 11:00:00')";
$q2 = "INSERT INTO reservation (reservation_time, container_id) VALUES
      ('2012-07-03 11:00:00', LAST_INSERT_ID())";

$r1 = mysqli_query($dbc, $q1);
$r2 = mysqli_query($dbc, $q2);

if ($r1 && r2){
    mysqli_query($dbc, 'COMMIT');
} else {
    mysqli_query($dbc, 'ROLLBACK');
}
我做错了什么$r2返回false。LAST_INSERT_ID()不起作用

LAST_INSERT_ID()
在任何上下文中都起作用,无论是事务、用户定义的存储过程还是用户定义的函数

您的问题肯定不是
LAST\u INSERT\u ID()
,但更可能是代码的任何其他部分出现了故障

尝试检查是否存在错误并输出错误,以便能够读取错误消息并相应地采取行动


使用
mysql\u error()

您可能希望在r2调用后添加“显示错误”代码以获取错误。(查一查,我不知道从我的头顶上看是怎么回事,但你在寻找
或die(mysql_error());
或诸如此类)是你的容器。容器id是自动增量PK吗?没有它,就永远不会有最后一个插入id()。@MarcB他提到容器id是自动递增的
container\u id INT(PK-AI)
,PK代表主键,AI代表自动递增。@mihai:除了我的问题,我没有看到关于自动递增的内容。对不起,朋友们!上面的代码是正确的。我在项目中的代码中犯了语法错误。