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