php – 为什么以下PDO事务提交?
|
我认为这个问题本身就是不言自明的.代码如下 –
<?php
$PDO = NULL;
$pdo_dsn = 'mysql:host=localhost;dbname=pdo_test';
$pdo_persistence = array( PDO::ATTR_PERSISTENT => true );
$db_user = 'root';
$db_pass = '';
$db_query = "INSERT INTO person(name,address)
VALUES ('Mamsi Mamsi','Katabon')";
try
{
$PDO = new PDO($pdo_dsn,$db_user,$db_pass,$pdo_persistence);
}
catch(PDOException $e)
{
echo "Error occured: ". $e->getMessage();
die();
}
$PDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$PDO->setAttribute(PDO::ATTR_AUTOCOMMIT,false);
try
{
$PDO->beginTransaction();
$PDO->exec($db_query);
throw new PDOException('Generated Exception');
$PDO->commit();
}
catch(PDOException $e)
{
echo "An error occured while doing a database transaction. The
error message is : ".$e->getMessage();
$PDO->rollBack();
die();
}
?>
即使我在catch块中回滚事务,数据仍然被插入到数据库中.为什么? 编辑 我将在documentation中添加以下几行以进一步澄清 –
此外,从this页面开始以下行 – bool PDO::beginTransaction ( void )
您应该检查您是否使用INNODB作为数据库类型. MyISAM不支持交易.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
