私のphpサイトには、次々と実行するいくつかのSQLクエリがあります。
1 つが失敗した場合、残りを挿入し続けないようにトランザクションを実装することを考えました。
ただし、コードにトランザクションを実装した後、挿入が行われなくなっていることがわかりました。
私がどこで間違っているのか、私が直面している問題をどのように修正できるのかを誰かが指摘できますか?
$db = getConnection();
try{
/* Begin a transaction, turning off autocommit */
$db->beginTransaction();
$stmt = $db->prepare('INSERT INTO Orders VALUES(\'\', :ref, :date, :aid, 1)');
$stmt->bindParam(':ref', $referenceCode);
$stmt->bindParam(':date', $date);
$stmt->bindParam(':aid', $agentId);
$stmt->execute();
$stmt = $db->prepare('UPDATE Agents SET Agent_OrderCount = :cow WHERE Agent_Id = :aid');
$stmt->bindParam(':cow', $counter);
$stmt->bindParam(':aid', $agentId);
$stmt->execute();
$db->commit();
sendResponse(200, '{"Error":"0", "Message":"Successfully created order"}');
return;
}
catch(PDOException $e){
/* Recognize mistake and roll back changes */
$db->rollBack();
sendResponse(400, '{"Error":"3002", "Message":"'. $e->getMessage() .'"}');
return;
}
トランザクション コードを挿入する前に、すべての挿入クエリが正常に機能していたことを確認できます。