首页 > 解决方案 > 这个交易代码工作正常吗?

问题描述

我使用此代码在 2 个表中插入数据,

try {
    array(PDO::ATTR_PERSISTENT => true);  
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->beginTransaction();
    // 1st insert
    $db->exec("insert into users (id, username, password,permission) values (18, 'raman', 2002,3)");
    //2nd insert 
    $db->exec("insert into table_11 (id,user_id1,amount) values (14, '130', '11300')"); 

    $db->commit();
} catch (Exception $e) {
    $db->rollBack();
    echo "Failed  : " . $e->getMessage();
}

这段代码工作正常但是当我通过使第二次插入错误测试事务时,因为我将表名更改为错误的表名,我发现第一次插入仍然有效并且即使第二次插入不起作用也能够添加新数据,我的问题为什么第一次插入有效?我使用 MySQL。

标签: phppdo

解决方案


我发现为什么这段代码不能按预期工作,我应该在创建表时使用 InnoDB,所以我删除了当前表并使用 InnoDB 存储引擎创建新表,现在它工作正常。


推荐阅读