# PDO::commit

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

PDO::commit — Consigna una transacción

### Descripción

public PDO::commit(): bool

Consigna una transacción, devolviendo la conexión a la base de datos al modo 'autocommit' hasta que la siguiente llamada a PDO::beginTransaction() inicie una nueva transacción.

### Valores devueltos

Devuelve `true` en caso de éxito o `false` en caso de error.

### Errores/Excepciones

Lanza una PDOException si no hay ninguna transacción activa.

> Nota: Se emite una excepción inclusi cuando el atributo `PDO::ATTR_ERRMODE` no es `PDO::ERRMODE_EXCEPTION`.

### Ejemplos

Ejemplo #1 Consignar una transacción básica

`<?php
/* Iniciar una transacción, desactivando 'autocommit' */
$gbd->beginTransaction();
/* Insertar múltiples registros según "todo o nada" */
$sql = 'INSERT INTO fruit
(name, colour, calories)
VALUES (?, ?, ?)';
$gsent = $gbd->prepare($sql);
foreach ($frutas as $fruta) {
$gsent->execute(array(
$fruta->name,
$fruta->colour,
$fruta->calories,
));
}
/* Consignar los cambios */
$gbd->commit();
/* La conexión a la base de datos ahora a vuelto al modo 'autocommit' */
?>`

Ejemplo #2 Consignar una transacción DDL

`<?php
/* Iniciar una transacción, desactivando 'autocommit' */
$gbd->beginTransaction();
/* Cambiar el esquema de la base de datos */
$gsent = $gbd->exec("DROP TABLE fruit");
/* Consignar los cambios */
$gbd->commit();
/* La conexión a la base de datos ahora a vuelto al modo 'autocommit' */
?>`

> Nota: No todas las bases de datos permitirán que las transacciones operen sobre sentencias DDL: algunas generarán errores, mientras que otras (incluida MySQL) automáticamente consignarán la transacción después de encontrar la primera sentencia DDL.

### Ver también

- PDO::beginTransaction() - Inicia una transacción
- PDO::rollBack() - Revierte una transacción
- Transacciones y 'auto-commit'