4
我有2个MySQL表的PHP/MySQL如何让LAST_INSERT_ID在交易
表#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()不起作用
您可能想在r2调用后添加实际的“显示错误”代码以获取错误。 (查看它,我不知道它是如何从头顶开始的,但是你正在寻找'或者死亡(mysql_error());'或者类似的东西) – Nanne 2012-07-31 16:46:59
你的container.container_id是一个auto_increment PK吗?没有这个,永远不会是last_insert_id()。 – 2012-07-31 16:51:11
@MarcB他提到container_id是自动递增的。 'container_id INT(PK AI)',PK代表主键,AI代表自动增量。 – 2012-07-31 16:52:46