PDO:commit失败时,是否引发异常?或者只是返回false
docs没有提到任何异常,但其中一条评论说它提到了异常。我自己想不出办法来测试。

最佳答案

从php_pdo.c看来,commit方法实际上可以抛出异常。至少,当没有活动事务时。

static PHP_METHOD(PDO, commit)
{
    pdo_dbh_t *dbh = Z_PDO_DBH_P(getThis());

    if (zend_parse_parameters_none() == FAILURE) {
        return;
    }
    PDO_CONSTRUCT_CHECK;

    if (!dbh->in_txn) {
        zend_throw_exception_ex(php_pdo_get_exception(), 0, "There is no active transaction");
        RETURN_FALSE;
    }

    if (dbh->methods->commit(dbh)) {
        dbh->in_txn = 0;
        RETURN_TRUE;
    }

    PDO_HANDLE_DBH_ERR();
    RETURN_FALSE;
}

关于php - PDO::commit是否会在失败时引发异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29679194/

10-10 03:21