Есть транзакция с выполнением нескольких запросов подряд.
Суть примера такая.
Есть таблица bank с полями
id
sum Сумма банка
тип таблиц InnoDB
Любой авторизованный пользователь нажимает на кнопку ПОЛУЧИТЬ БАНК и выполняется скрипт ниже
ПРИМЕР
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- try {
- /* Начало транзакции, отключение автоматической фиксации */
- $dbh->beginTransaction();
- // Статус 1 (открыт)
- $sql = "SELECT `id`,`sum` FROM `bank` WHERE `status`=? LIMIT 0,1";
- $stmt = $dbh->prepare ( $sql );
- if ( $data = $stmt->fetchAll ( PDO::FETCH_NUM ) ) {
- $id_invoice = $rows [0];
- $sum = $rows [1];
- $sql = "UPDATE `user` SET `balanse`=balanse+? WHERE `id`=?";
- $stmt = $dbh->prepare ( $sql );
- // ДРУГИЕ ДЕЙСТВИЕ
- // Обновляем статус на 0 (закрыт)
- $sql = "UPDATE `bank` SET `status`=? WHERE `id`=?";
- $stmt = $dbh->prepare ( $sql );
- }
- /* Фиксация изменений */
- $dbh->commit();
- }
- catch ( Exception $e ) {
- $dbh -> rollBack ();
- }