pdo事务回滚的问题

WBOY
Freigeben: 2016-06-23 13:59:15
Original
1430 Leute haben es durchsucht

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(); 永远执行不到

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage