PHP.mk документација

PDO::rollBack

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

pdo.rollback.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека pdo.rollback.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
PDO::rollBack

Референца за `pdo.rollback.php` со подобрена типографија и навигација.

pdo.rollback.php

PDO::rollBack

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDO::rollBack Враќа трансакција

= NULL

public PDO::rollBack(): bool

Враќа тековна трансакција, како што е иницирана од За жал, не секоја база на податоци поддржува трансакции, така што PDO мора да работи во таканаречен режим на „автоматско потврдување“ кога првпат ќе ја отворите врската. Режимот на автоматско потврдување значи дека секое прашање што го извршувате има своја имплицитна трансакција, ако базата на податоци го поддржува тоа, или без трансакција ако базата на податоци не поддржува трансакции. Ако ви треба трансакција, мора да го користите методот.

Ако базата на податоци беше поставена на режим на автоматско потврдување, оваа функција ќе го врати режимот на автоматско потврдување откако ќе ја врати трансакцијата.

Некои бази на податоци, вклучувајќи го и MySQL, автоматски издаваат имплицитно ПОТВРДУВАЊЕ кога изјава за јазик за дефиниција на базата на податоци (DDL) како што е DROP TABLE или CREATE TABLE е издадена во рамките на трансакција. Имплицитното ПОТВРДУВАЊЕ ќе ве спречи да вратите какви било други промени во границата на трансакцијата.

Параметри

Оваа функција нема параметри.

Вратени вредности

Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.

Errors/Exceptions

Фрла PDOException ако нема активна трансакција.

Забелешка: Се крева исклучок дури и кога PDO::ATTR_ERRMODE атрибутот не е PDO::ERRMODE_EXCEPTION.

Примери

Пример #1 Враќање на трансакција

Следниот пример започнува трансакција и издава две изјави што ја менуваат базата на податоци пред да ги врати промените. На MySQL, сепак, изјавата DROP TABLE автоматски ја потврдува трансакцијата така што ниту една од промените во трансакцијата не се враќа.

<?php
/* Begin a transaction, turning off autocommit */
$dbh->beginTransaction();

/* Change the database schema and data */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
SET name = 'hamburger'"
);

/* Recognize mistake and roll back changes */
$dbh->rollBack();

/* Database connection is now back in autocommit mode */
?>

Белешки од корисници 3 белешки

JonasJ
пред 18 години
Just a quick (and perhaps obvious) note for MySQL users;

Don't scratch your head if it isn't working if you are using a MyISAM table to test the rollbacks with. 

Both rollBack() and beginTransaction() will return TRUE but the rollBack will not happen.

Convert the table to InnoDB and run the test again.
brian на diamondsea точка com
пред 17 години
Here is a way of testing that your transaction has started when using MySQL's InnoDB tables.  It will fail if you are using MySQL's MyISAM tables, which do not support transactions but will also not return an error when using them.

<?
// Begin the transaction
$dbh->beginTransaction();

// To verify that a transaction has started, try to create an (illegal for InnoDB) nested transaction.
//    If it works, the first transaction did not start correctly or is unsupported (such as on MyISAM tables)
try {
    $dbh->beginTransaction();
    die('Cancelling, Transaction was not properly started');
} catch (PDOException $e) {
    print "Transaction is running (because trying another one failed)\n";
}
?>
Петрос Гиакувакис
пред 15 години
Should anyone reading this be slightly panicked because they just discovered that their MySQL  tables are MyIsam and not InnoDb, don't worry... You can very easily change the storage engine using the following query: 

ALTER TABLE your_table_name ENGINE = innodb;
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.