【发布时间】:2012-07-29 12:10:52
【问题描述】:
我有 2 个 MySQL 表
table#1 - 容器:
container_id INT (PK AI)
start_time DATETIME
table#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 返回假。 LAST_INSERT_ID() 不起作用
【问题讨论】:
-
您可能希望在 r2 调用之后添加实际的“显示错误”代码以获取错误。 (查一下,我不确定它是怎么回事,但你正在寻找
or die(mysql_error());或类似的东西) -
你的 container.container_id 是 auto_increment PK 吗?没有它,就永远不会有 last_insert_id()。
-
@MarcB 他提到 container_id 是自动递增的。
container_id INT (PK AI),PK代表主键,AI代表自增。 -
@mihai:除了我的问题,我没有看到提到 auto_increment。
-
对不起朋友们!上面的代码是正确的。我在项目中的代码中犯了语法错误。
标签: php mysql transactions lastinsertid