Saltar al contenido

autocommit

En este artículo, nos centraremos en la función mysqli_autocommit() de PHP, que se utiliza para activar o desactivar la función de autocommit en las transacciones de MySQLi. Le proporcionaremos una visión general de la función, cómo funciona y ejemplos de su uso.

Introducción a la función mysqli_autocommit()

La función mysqli_autocommit() es una función integrada en PHP que se utiliza para activar o desactivar la función de autocommit en las transacciones de MySQLi. Cuando el autocommit está habilitado, cada instrucción SQL se trata como una transacción separada y se confirma automáticamente. Cuando el autocommit está deshabilitado, debe confirmar o revertir explícitamente las transacciones utilizando las funciones mysqli_commit() y mysqli_rollback().

Cómo usar la función mysqli_autocommit()

Usar la función mysqli_autocommit() es muy sencillo. Solo necesita llamar a la función y pasarle una conexión MySQLi válida y un valor booleano que represente el estado del autocommit.

Parámetros:

  • connection (procedimental) / $mysqli (POO): El objeto de conexión MySQLi.
  • mode (bool): TRUE para habilitar el autocommit, FALSE para deshabilitarlo.

Valor devuelto: Devuelve TRUE en caso de éxito, FALSE en caso de error.

Nota: MySQLi admite tanto la sintaxis orientada a objetos como la procedimental. Los siguientes ejemplos utilizan el método de POO $mysqli->autocommit(). El equivalente procedimental es mysqli_autocommit($link, $mode).

A continuación se muestra un ejemplo:

Cómo usar la función mysqli_autocommit()

php
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: " . $mysqli->connect_error;
    exit();
}

$mysqli->autocommit(FALSE);

$mysqli->query("INSERT INTO users (name, email) VALUES ('John', '[email protected]')");
$mysqli->query("UPDATE users SET name='John Doe' WHERE id=1");

$mysqli->commit();

$mysqli->autocommit(TRUE);

$mysqli->close();
?>

En este ejemplo, creamos un nuevo objeto MySQLi y deshabilitamos el autocommit llamando a la función autocommit() con un argumento de FALSE. Luego ejecutamos dos consultas para insertar y actualizar datos en una tabla users. Confirmamos la transacción llamando a la función commit() del objeto MySQLi.

Luego volvemos a habilitar el autocommit llamando a la función autocommit() con un argumento de TRUE. Finalmente, cerramos la conexión MySQLi utilizando el método close() del objeto MySQLi.

Uso avanzado

La función mysqli_autocommit() opera a nivel de conexión. Cuando cambia el autocommit de FALSE a TRUE, MySQLi confirma automáticamente cualquier transacción pendiente. Este comportamiento es útil al gestionar múltiples transacciones independientes de forma secuencial dentro del mismo script. A continuación se muestra un ejemplo:

Uso avanzado de PHP autocommit()

php
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: " . $mysqli->connect_error;
    exit();
}

// Start and commit the first transaction
$mysqli->autocommit(FALSE);
$mysqli->query("INSERT INTO users (name, email) VALUES ('John', '[email protected]')");
$mysqli->commit();

// Start and commit the second transaction
$mysqli->autocommit(FALSE);
$mysqli->query("UPDATE users SET name='John Doe' WHERE id=1");
$mysqli->commit();

// Re-enable autocommit for subsequent queries
$mysqli->autocommit(TRUE);

$mysqli->close();
?>

En este ejemplo, deshabilitamos el autocommit y ejecutamos una consulta INSERT. Luego confirmamos explícitamente la primera transacción. A continuación, deshabilitamos nuevamente el autocommit para iniciar una segunda transacción, ejecutamos una consulta UPDATE y la confirmamos. Finalmente, volvemos a habilitar el autocommit y cerramos la conexión MySQLi.

Conclusión

En conclusión, la función mysqli_autocommit() es una herramienta potente para habilitar o deshabilitar la función de autocommit en las transacciones de MySQLi en PHP. Al comprender cómo usar la función y sus escenarios de uso avanzado, puede aprovechar esta característica para crear transacciones de MySQL potentes y flexibles en sus scripts de PHP. Recuerde siempre confirmar o revertir las transacciones cuando el autocommit esté deshabilitado para garantizar la integridad y coherencia de los datos en su base de datos.

Práctica

¿Qué hace el modo autocommit en PHP?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.