在PHP PDO事务回滚后返回JSON

时间:2012-09-19 18:40:05

标签: php jquery transactions pdo rollback

我有一个调用PHP脚本的jQuery的AJAX调用,然后将一些JSON格式的信息返回给successerror函数,如下所示:

$.ajax({
    url: 'crud/clients.php',
    dataType: 'json',
    type: 'POST',
    data: {
        oper:'add'
        ,id:''
        ,clientID:$('#clientID_add').val()
    },
    async: false,
    success: function(data){
        alert(data.errorsExist);
    },
    error: function(data){
        alert(data.appError);
    }
});

以下是调用的PHP脚本:

try {
                // Begin a transaction, turning off autocommit
                $dbh->beginTransaction(); 

                // Client INSERT
                $sthClients->execute($crudColumnValues);
                // Get the ID from the client we just INSERTED
                $lastInsertID = $dbh->lastInsertId();

                // Activity INSERT
                $sthActivity->execute();

                // commit the queries
                $dbh->commit();
            } 
            catch (PDOException $e) {
                // Close the connection
                $dbh = null;
                // Echo back JSON
                echo '{"appError": "'.$e->getMessage().'", "errorsExist":"Y"}';
                // rollback the transaction
                $testing = $dbh->rollBack();

                exit();
            }

当我在IDE中测试错误处理并调试我的代码时,PHP文件在rollBack();调用时停止,并且在回滚后我的JSON永远不会回到我的AJAX调用。

当调用rollBack时,有没有办法将JSON返回给我的AJAX函数?

1 个答案:

答案 0 :(得分:3)

也许是因为:

// Close the connection
$dbh = null;
.....
$testing = $dbh->rollBack(); // $dbh is null