Я сделал оболочку базы данных с дополнительными функциями для системы 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-> (, ) не вызывает ничего, кроме $ pdo-> prepare () -> execute () (с дополнительной обработкой ошибок, конечно).
Так что я думаю, что или транзакционная система MySQL не работает, или возможности PDO не работают, или я вижу что-то не так.
Кто-нибудь знает, в чем проблема?