Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Транзакция в PDO
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Транзакция в PDO

Страниц (1): [1]
 

1. Sanek_OS9 - 20 Марта, 2015 - 02:21:28 - перейти к сообщению
Здравствуйте, помогите разобраться с транзакциями в PDO. Задача такова, добавить данные в БД при условии что все данные будут добавлены, иначе ничего не добавлять.
Делаю это так:
PHP:
скопировать код в буфер обмена
  1.                 try{
  2.                         DB::me()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  3.                         DB::me()->beginTransaction() ;
  4.                         // создаем профиль
  5.                         $q = DB::me()->prepare("INSERT INTO `kolhoz_user` (`id`) VALUES (?)") ;
  6.                         $q->execute(Array($this->id)) ;
  7.                        
  8.                         $this->addGround('ground', 4) ;
  9.                        
  10.                         $this->addGround('petground', 4) ;
  11.                        
  12.                         $this->addGround('fishground', 4) ;
  13.                         DB::me()->commit() ;
  14.                 }catch(Exception $e){
  15.                         DB::me()->rollBack() ;
  16.                         echo 'Ошибка: ' . $e->getMessage()  ;
  17.                 }
  18.  

В одной из таблиц намеренно допустил ошибку в названии поля, скрипт выдает соответствующую ошибку но данные все равно добавляет в те таблицы в которых нет ошибок.
(Добавление)
Проблема найдена, Тип таблиц был выбран MyISAM, поставил InnoDB теперь все работает.

 

Powered by ExBB FM 1.0 RC1