Здравствуйте, помогите разобраться с транзакциями в PDO. Задача такова, добавить данные в БД при условии что все данные будут добавлены, иначе ничего не добавлять.
Делаю это так:
PHP:
скопировать код в буфер обмена
try{ DB::me()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); DB::me()->beginTransaction() ; // создаем профиль $q = DB::me()->prepare("INSERT INTO `kolhoz_user` (`id`) VALUES (?)") ; $q->execute(Array($this->id)) ; $this->addGround('ground', 4) ; $this->addGround('petground', 4) ; $this->addGround('fishground', 4) ; DB::me()->commit() ; }catch(Exception $e){ DB::me()->rollBack() ; echo 'Ошибка: ' . $e->getMessage() ; }
В одной из таблиц намеренно допустил ошибку в названии поля, скрипт выдает соответствующую ошибку но данные все равно добавляет в те таблицы в которых нет ошибок.
(Добавление)
Проблема найдена, Тип таблиц был выбран MyISAM, поставил InnoDB теперь все работает.
|