5

MySQLテーブルが2つあります

table#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()が機能しない

4

1 に答える 1

4

LAST_INSERT_ID()トランザクション、ユーザー定義のストアド プロシージャ、ユーザー定義関数など、あらゆるコンテキストで機能します。

あなたの問題は間違いありませんLAST_INSERT_ID()が、コードの他の部分が失敗している可能性が高くなります。

エラーが発生したかどうかを確認し、エラーを出力して、エラー メッセージを読み、それに応じて対処できるようにしてください。

そのために使用mysql_error()します。

于 2012-07-31T16:51:21.493 に答える