簡體   English   中英

返回LastInsertID時,PDO事務回滾

[英]PDO Transaction rolling back when returning LastInsertID

我遇到一個奇怪的問題,我不明白。 我有以下功能,應該返回$ asset_ID:

function commit_purchase($asset_type_ID, $org_ID, $asset_desc, $asset_cost, $date, $org_to_member_ID, $asset_ID, $purchaser_cur_invest, $purchaser_cred_deb, $purchaser_balance) {
global $db;
$db->beginTransaction();
$query = "INSERT INTO assets
                       (asset_type_ID, org_ID, asset_desc, asset_cost, asset_value, purchase_date, is_approved)
                    VALUES
                       (:asset_type_ID, :org_ID, :asset_desc, :asset_cost, :asset_cost, :date, 1)";
$statement = $db->prepare($query);
$statement->bindValue(':asset_type_ID', $asset_type_ID);
$statement->bindValue(':org_ID', $org_ID);
$statement->bindValue(':asset_desc', $asset_desc);
$statement->bindValue(':asset_cost', $asset_cost);
$statement->bindValue(':date', $date);
$statement->execute();
$asset_ID = $db->lastInsertId();
//return $asset_ID;
$db->commit(); 
}

我這樣調用函數:

$asset_ID = commit_purchase($asset_type_ID, $org_ID..etc, etc.);

如果我取消注釋return $asset_ID ,則事務回滾並且不提交。 如果我將其保留為注釋,則不會傳遞變量。 如果我注釋掉beginTransactioncommit行,則可以取消注釋$asset_ID返回$asset_ID ,一切正常。

我希望它作為事務保留,並且我想返回$asset_ID 我究竟做錯了什么?

您需要移動return $asset_ID; 在提交后的一行到,因為return時函數的執行停止。 沒有調用提交,您將隱式回滾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM