0
내가 이해하지 못하는 이상한 문제가 있습니다. 나는 return $asset_ID
의 주석을 해제하면 트랜잭션은 롤백 및 커밋하지 않습니다,PDO LastInsertID를 반환 할 때 트랜잭션 롤백
$asset_ID = commit_purchase($asset_type_ID, $org_ID..etc, etc.);
:
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를 반환하도록되어 다음과 같은 기능을 가지고있다. 주석 달린 채로두면 변수가 전달되지 않습니다. beginTransaction
및 commit
행을 주석 처리하면 반환 $asset_ID
의 주석 처리를 제거 할 수 있으며 모든 것이 작동합니다.
거래로 남겨두고 싶습니다. $asset_ID
을 반환하고 싶습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
그 트릭을했습니다. 나는 커밋 전에 몇 가지 더 많은 쿼리를 던질 계획이다. 다음에 오는 쿼리에서 $ asset_ID 변수를 사용할 수 있습니까? – Progger
예. 변수를 할당하면 변수를 덮어 쓰거나 설정을 해제하지 않는 한 현재 범위 내에서 사용할 수 있습니다. 모든 쿼리를 실행하고 커밋 한 후에야 값을 반환해야합니다. – nnichols