PDO::commit

Commits a transaction

&reftitle.description; public `bool` `PDO::commit`

Commits a transaction, returning the database connection to autocommit mode until the next call to `PDO::beginTransaction` starts a new transaction.

&reftitle.parameters; &no.function.parameters;
&reftitle.returnvalues;

&return.success;

&reftitle.errors;

Throws a `PDOException` if there is no active transaction.

&pdo.errors.exception-not-errmode;
&reftitle.examples;

### Committing a basic transaction

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

    /* Insert multiple records on an all-or-nothing basis */
    $sql = 'INSERT INTO fruit
        (name, colour, calories)
        VALUES (?, ?, ?)';

    $sth = $dbh->prepare($sql);

    foreach ($fruits as $fruit) {
        $sth->execute(array(
            $fruit->name,
            $fruit->colour,
            $fruit->calories,
        ));
    }

    /* Commit the changes */
    $dbh->commit();

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

### Committing a DDL transaction

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

    /* Change the database schema */
    $sth = $dbh->exec("DROP TABLE fruit");

    /* Commit the changes */
    $dbh->commit();

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

Not all databases will allow transactions to operate on DDL statements: some will generate errors, whereas others (including MySQL) will automatically commit the transaction after the first DDL statement has been encountered.

&reftitle.seealso;

- `PDO::beginTransaction`
- `PDO::rollBack`
- Transactions and auto-commit