2

我有以下环境

Wamp 版本 :2.4 Apache 版本 :2.4.4
PHP 版本 :5.4.16

Firebird/InterBase 支持动态编译时客户端库版本 Firebird API 版本 25 运行时客户端库版本 WI-V6.3.0.26074 Firebird 2.5

PDO PDO 驱动程序 firebird、mysql、sqlite

PDO_火鸟

Firebird/InterBase 的 PDO 驱动程序已启用,但以下 php 代码无法正常工作。事务永远不会回滚。

<?php
    require_once 'KLogger.php';
    $log = new KLogger ( "log.txt" , KLogger::DEBUG );
    try
    {
        $db = new PDO("firebird:dbname=MY-SERVER:MBOOKS-DB", "sysdba", "masterkey");
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $result = $db->beginTransaction();
        $log->LogInfo('TRANSACTION ' . $result);
        $sql = "UPDATE control SET code = code + 1 WHERE ( company_id = 26 ) AND ( fin_year = '0000' ) AND ( item = 'SAL_ID' )";
        $stmt = $db->prepare($sql);
        $stmt->execute();
        //$db->commit();
        $db->rollBack();
        $db = null;
    }
    catch (PDOException $e)
    {
        $db->rollBack();
        $log->LogError($e->getMessage());
    }
    catch (ClientProtocolException $e) 
    {
        $db->rollBack();
        $log->LogError($e->getMessage());
    }
    catch (IOException $e) 
    {
        $db->rollBack();
        $log->LogError($e->getMessage());
    }
?>

可能是什么问题呢?

4

1 回答 1

2

你能检查一下 PDO::ATTR_AUTOCOMMIT 是否为 0

$db->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
于 2013-10-07T08:23:32.673 回答