Какие коды могут быть в транзакциях PDO?

Вот мой сценарий:

$id = $_GET['id']; $value = $_GET['val']; // database connection here try{ $db_conn->beginTransaction(); // inserting $stm1 = $db_conn->prepare("INSERT into table1 (col) VALUES (?)"); $stm1->execute(array($value)); // updating $stm2 = $db_conn->prepare("UPDATE table2 SET col = "a new row inserted" WHERE id = ?"); $stm2->execute(array($id)); $db_conn->commit(); } catch(PDOException $e){ $db_conn->rollBack(); } 

Все, что я хочу знать, могу ли я использовать оператор if в кодах, которые находятся между beginTransaction() и commit() ? Что-то вроде этого:

 $id = $_GET['id']; $value = $_GET['val']; // database connection here try{ $db_conn->beginTransaction(); // inserting $stm1 = $db_conn->prepare("INSERT into table1 (col) VALUES (?)"); $stm1->execute(array($value)); // updating if (/* a condition here */){ $stm2 = $db_conn->prepare("UPDATE table2 SET col = "a new row inserted" WHERE id = ?"); $stm2->execute(array($id)); } $db_conn->commit(); } catch(PDOException $e){ $db_conn->rollBack(); } 

Могу я ?


На самом деле я спросил об этом, потому что вот предложение, в котором говорится, что вы не можете этого сделать, и это опасно:

Не работает и опасен, так как вы можете закрыть транзакцию слишком рано с помощью вложенного commit ().