2015-07-12 5 views
0

Я понимаю, что InnoDB теперь является двигателем по умолчанию для MySQL. С этими знаниями я начинаю разбираться в транзакциях.Сделки с использованием PDO

Вот то, что я до сих пор ...

try{ 
    $pdo->beginTransaction(); 
     $stmnt = $pdo->prepare ("delete from playing where uniq = :uniq"); 
     $stmnt->bindParam (':uniq',$uniq); 
     $stmnt->execute(); 

     $stmnt = $pdo->prepare ("insert into removals (playdate, time, vid) values (:playdate, :time, :vid"); 
     $stmnt->bindParam (":playdate",$playdate); 
     $stmnt->bindParam (":time", $time); 
     $stmnt->bindParam (":vid", $vid); 
     $stmnt->execute(); 

    $pdo->commit(); 

    echo "1"; // success 
    return; 
    } 
    catch (PDOException $e){ 
     $pdo->rollback(); 
     echo $e->getMessage(); 
    } 

Это вызывается JQuery с результатом «1», что указывает на успех.

Если я правильно понимаю это, если операторы бота успешно выполняются, они оба будут «совершены», однако они либо не сработают, но и не будут выполняться операции с базой данных, и будет выведено сообщение об ошибке с подробным описанием выполнения первого оператора.

Мой настоящий вопрос заключается в том, должна ли начальная транзакция и фиксация находиться внутри или за пределами блока try ... catch.

Спасибо, -dmd-

+0

Был ли мой ответ ответом на ваш вопрос? –

ответ

0

Для удобства чтения и чистоты, да это должно быть внутри блока Try. Но это действительно не имеет значения. Он просто объявляет, что совершать или откатывать, если вы вызываете roll back.

Смежные вопросы