【发布时间】:2011-01-17 21:55:53
【问题描述】:
我已经围绕 PDO 系统制作了一个具有额外功能的数据库包装器(是的,我知道一个包装器周围的包装器,但它只是具有一些额外功能的 PDO)。但是我发现了一个问题。
以下内容并不正常:
<?php
var_dump($db->beginTransaction());
$db->query('
INSERT INTO test
(data) VALUES (?)
;',
array(
'Foo'
)
);
print_r($db->query('
SELECT *
FROM test
;'
)->fetchAll());
var_dump($db->rollBack());
print_r($db->query('
SELECT *
FROM test
;'
)->fetchAll());
?>
var_dump 显示 beginTransaction 和 rollBack 函数返回 true,因此没有错误。
我希望第一个 print_r 调用显示一个包含 N 个项目的数组,第二个调用显示 N-1 个项目。但这不是真的,它们都显示相同数量的项目。
我的 $db->query(, ) 然后 $pdo->prepare()->execute() 什么都不调用(当然还有额外的错误处理)。
所以我认为或者 MySQL 的事务系统不工作,或者 PDO 的实现不工作,或者我发现有问题。
有人知道问题出在哪里吗?
【问题讨论】:
标签: php mysql pdo transactions