Commit using PHP

Asked

Viewed 328 times

1

Defining SET AUTOCOMMIT=0 on connection but not working.

I’m using $mysqli->real_connect()

if (!$conn->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT=0')) {
    $fErro .= '<p>Não foi possível desativar o autocommit</p>';
}

PHP version 5.4.9 or 5.6.12. I’m having the same problem.

  • No error on AUTOCOMMIT=0 line

  • Question, the user logged in to do this command has the necessary privileges ?

2 answers

2

According to the documentation, to deactivate the autocommit:

$conn->autocommit(FALSE);

Example of use:

$conn->autocommit(FALSE);

$mysqli->query("INSERT INTO Language VALUES ('DEU', 'Bavarian', 'F', 11.2)");
$mysqli->query("INSERT INTO Language VALUES ('DEU', 'Swabian', 'F', 9.4)");

$conn->commit();
$conn->close();

1


Welguri, the ideal would be to use transaction which implicitly disables autocommit until it is committed and is super simple and safe:

<?php
    try 
    {
        // Primeiro de tudo, vamos começar a transação
        $conn->beginTransaction();

        // Um conjunto de querys, se uma falhar, um exception será lançado
        $conn->query('primeira query');
        $conn->query('segunda query');
        $conn->query('terceira query');

        // Se nós chegamos até aqui, significa que nenhum exception (erro) foi lançado
        // então nós comitamos a transação
        $conn->commit();
    } 
    catch (Exception $e) 
    {
        // Uma exception foi lançada
        // Nós então precisamos voltar as alterações
        $conn->rollback();
    }
?>

Browser other questions tagged

You are not signed in. Login or sign up in order to post.