pdo事务回滚的有关问题

WBOY
풀어 주다: 2016-06-13 11:54:22
원래의
958명이 탐색했습니다.

pdo事务回滚的问题

本帖最后由 manbudezhu 于 2014-04-10 17:33:03 编辑 try {
        $dsn="mysql:host=localhost;dbname=dadao;port:3366";
        $pdo = new PDO($dsn, "root", "");
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $pdo->begintransaction();
        $sql="insert into user(username) values(:username)";
        $stmt = $pdo->prepare($sql);
        $stmt->execute(array(':username'=>'insert title1'));
        $stmt->execute(array(':username'=>NULL));
        $pdo->commit();

    } catch (Exception $e) {
        echo '事务异常,现在进行回滚';
        echo $e->getMessage();
        // 回滚事务
        $pdo->rollBack();
    }
一个简单的事务代码,数据库表user中username不允许为空。提示:事务异常,现在进行回滚 Column 'username' cannot be null1,数据库表没有写入。但是,将$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);删除后,就没有任何提示,且数据库中有记录插入。$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);这行代码不是设置的是错误的提示方式吗,为啥会影响数据库的插入。
------解决方案--------------------
是的,是设置错误处理方式
没有 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try  ...  catch 结构不会生效
$pdo->rollBack(); 永远执行不到
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿