Php Zend框架事务(Zend_db_适配器)

Php Zend框架事务(Zend_db_适配器),php,zend-framework,transactions,Php,Zend Framework,Transactions,我对交易有问题 $backendB = new BackendBanner();//BackendBanner and ImageBanner extends Zend_Db_Table_Abstract $backendB->getAdapter()->beginTransaction(); // starting transaction try { $backendB->getAdapter()->insert('module_adv_banner',$

我对交易有问题

$backendB = new BackendBanner();//BackendBanner and ImageBanner extends Zend_Db_Table_Abstract
$backendB->getAdapter()->beginTransaction(); // starting transaction

try {
      $backendB->getAdapter()->insert('module_adv_banner',$data);
      $lastID = $backendB->getAdapter()->lastInsertId();
      $imageBanner = new ImageBanner();
      $imageBanner->getAdapter()->insert('module_adv_filebanner',$imgdata);
      $imageBanner->getAdapter()->commit();
} catch (Exception $e) {
      $backendB->getAdapter()->rollBack();
      echo $e->getMessage();
}
执行此控制器操作时,第二个插入运算符中出现SQL错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id_banner1' in 'field list'
但回滚不起作用,第一个insert查询成功执行并将行插入到表中


我做错了什么

问题是您使用的MyISAM不支持事务

您使用的是什么数据库?如果是mysql,那么您的表使用的是什么存储引擎?表引擎是MyISAM,它不适用于事务。更改为InnoDB,一切正常。您是否检查了输入时模型中是否存在或定义了
id\u banner1
?此SQL错误是示例,我检查了,事务是否正常。问题已经解决了。
$backendB = new BackendBanner();//BackendBanner and ImageBanner extends Zend_Db_Table_Abstract
$backendB->getAdapter()->beginTransaction(); // starting transaction

try {
      $backendB->getAdapter()->insert('module_adv_banner',$data);
      $lastID = $backendB->getAdapter()->lastInsertId();
      $imageBanner = new ImageBanner();
      $imageBanner->getAdapter()->insert('module_adv_filebanner',$imgdata);
      $imageBanner->getAdapter()->commit();
} catch (Exception $e) {
      $backendB->getAdapter()->rollBack();
      echo $e->getMessage();
}