Zend Framework 事务处理 问题
官方给出一个示例,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php<br />
<br />
$db ->beginTransaction();<br />
<br />
try {<br />
$db ->query(...);<br />
$db ->commit();<br />
} catch (Exception $e ) {<br />
$db ->rollBack();<br />
echo $e ->getMessage();<br />
}<br />
<br />
?>
|
登录后复制
我写的实例中,确没有通过,而是提示
Fatal error: Uncaught exception 'PDOException' with message 'There is already an active transaction' in E:\php\ZendFramework\library\Zend\Db\Adapter\Pdo\Abstract.php:305 Stack trace: #0 E:\php\ZendFramework\library\Zend\Db\Adapter\Pdo\Abstract.php(305): PDO->beginTransaction() #1 E:\php\ZendFramework\library\Zend\Db\Adapter\Abstract.php(484): Zend_Db_Adapter_Pdo_Abstract->_beginTransaction() #2 D:\svnrepos\WiClub\src\application\models\shop.php(76): Zend_Db_Adapter_Abstract->beginTransaction() #3 D:\svnrepos\WiClub\src\application\controllers\ShopController.php(507): shop->inserttest(Array) #4 E:\php\ZendFramework\library\Zend\Controller\Action.php(513): ShopController->shopaddtestAction() #5 E:\php\ZendFramework\library\Zend\Controller\Dispatcher\Standard.php(289): Zend_Controller_Action->dispatch('shopaddtestActi...') #6 E:\php\ZendFramework\library\Zend\Controller\Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #7 D:\svnrepos\WiC in E:\php\ZendFramework\library\Zend\Db\Adapter\Pdo\Abstract.php on line 305
似乎是提示已经有一个事务在运行?刚接触ZF不久,不太熟悉,把相关源文件贴上来吧
config.ini
1 2 3 4 5 6 7 8 9 | <br />
[general]<br />
db.adapter = PDO_MYSQL<br />
db.config.host = localhost<br />
db.config.username = root<br />
db.config.password = 123456<br />
db.config.dbname = testdb <br />
db.config.charset = utf8<br />
date_default_timezone = "PRC" <br />
|
登录后复制
Util.php [所在文件夹 Common,与controllers文件夹,models文件夹同级]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <br>
<?php <br />
require_once 'Zend/Config/Exception.php' ;<br>
require_once 'Zend/Config/Ini.php' ;<br>
require_once 'Zend/Registry.php' ;<br>
require_once 'Zend/Db.php' ;<br>
require_once 'Zend/Db/Table.php' ;<br>
class Common_Util<br>
{ <br>
public static function getDb( $configName , $setcharset =false)<br>
{<br>
if ( $configName )<br>
{<br>
$config = new Zend_Config_Ini( '../config.ini' , $configName );<br>
$registry = Zend_Registry::getInstance();<br>
$registry ->set( 'config' , $config );<br>
$params = $config ->db->config->toArray();<br>
$params [ 'options' ]= array (PDO::ATTR_PERSISTENT => true);<br>
$db = Zend_Db::factory( $config ->db->adapter, $params ); <div class = "clear" >
</div>
|
登录后复制