繁体   English   中英

PHP / MYSQL如何在事务中获取last_insert_id

[英]PHP/MYSQL how to get last_insert_id in transaction

我有2个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_INSERT_ID()但更有可能是代码的任何其他部分失败。

尝试检查是否存在错误并输出错误以便能够读取错误消息并采取相应措施。

使用mysql_error()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM