MySQLi Tutorial MySQLi References

mysqli autocommit() Method



The mysqli::autocommit() / mysqli_autocommit() function is used to turn on or off auto-commit mode on queries for the database connection. To determine the current state of autocommit use the SQL command SELECT @@autocommit.

Syntax

//Object-oriented style
public mysqli::autocommit(enable)

//Procedural style
mysqli_autocommit(mysql, enable)

Parameters

mysql Required. For procedural style only: Specify a mysqli object returned by mysqli_connect() or mysqli_init().
enable Required. Specify whether to turn on auto-commit or not.

Return Value

Returns true on success or false on failure.

Example: Object-oriented style

The example below shows the usage of mysqli::autocommit() method.

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

//the table engine has to support transactions
$mysqli->query("CREATE TABLE IF NOT EXISTS Employee (
  Name VARCHAR(255) NOT NULL,
  Salary DECIMAL(18,2)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");

//turn autocommit off
$mysqli->autocommit(false);

$result = $mysqli->query("SELECT @@autocommit");
$row = $result->fetch_row();
printf("Autocommit is %s\n", $row[0]);

try {
  //preparing the insert statement
  $stmt = $mysqli->prepare('INSERT INTO Employee(Name, Salary) VALUES (?,?)');
  $stmt->bind_param('sd', $name, $salary);

  //inserting some values
  $name = 'John';
  $salary = 3000;
  $stmt->execute();
  $name = 'Marry';
  $salary = 2750;
  $stmt->execute();

  //committing the data in the database. This doesn't set autocommit=true
  $mysqli->commit();
  print "Committed 2 rows in the database\n";

  $result = $mysqli->query("SELECT @@autocommit");
  $row = $result->fetch_row();
  printf("Autocommit is %s\n", $row[0]);

  //trying to insert more values
  $name = 'Kim';
  $salary = 3100;
  $stmt->execute();
  $name = 'Ramesh';
  $salary = 3000;
  $stmt->execute();

  //setting autocommit=true will trigger a commit
  $mysqli->autocommit(true);

  print "Committed 2 row in the database\n";

} catch (mysqli_sql_exception $exception) {
  $mysqli->rollback();

  throw $exception;
}
?>

The output of the above code will be:

Autocommit is 0
Committed 2 rows in the database
Autocommit is 0
Committed 2 row in the database

Example: Procedural style

The example below shows the usage of mysqli_autocommit() function.

<?php
//establishing connection to the database
$mysqli = mysqli_connect("localhost", "user", "password", "database");
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: ". mysqli_connect_error();
  exit();
}

//the table engine has to support transactions
mysqli_query($mysqli, "CREATE TABLE IF NOT EXISTS Employee (
  Name VARCHAR(255) NOT NULL,
  Salary DECIMAL(18,2)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");

//turn autocommit off
mysqli_autocommit($mysqli, false);

$result = mysqli_query($mysqli, "SELECT @@autocommit");
$row = mysqli_fetch_row($result);
printf("Autocommit is %s\n", $row[0]);

try {
  //preparing the insert statement
  $stmt = mysqli_prepare($mysqli, 'INSERT INTO Employee(Name, Salary) VALUES (?,?)');
  mysqli_stmt_bind_param($stmt, 'sd', $name, $salary);

  //inserting some values
  $name = 'John';
  $salary = 3000;
  mysqli_stmt_execute($stmt);
  $name = 'Marry';
  $salary = 2750;
  mysqli_stmt_execute($stmt);

  //committing the data in the database. This doesn't set autocommit=true
  mysqli_commit($mysqli);
  print "Committed 2 rows in the database\n";

  $result = mysqli_query($mysqli, "SELECT @@autocommit");
  $row = mysqli_fetch_row($result);
  printf("Autocommit is %s\n", $row[0]);

  //trying to insert more values
  $name = 'Kim';
  $salary = 3100;
  mysqli_stmt_execute($stmt);
  $name = 'Ramesh';
  $salary = 3000;
  mysqli_stmt_execute($stmt);

  //setting autocommit=true will trigger a commit
  mysqli_autocommit($mysqli, true);

  print "Committed 2 row in the database\n";
} catch (mysqli_sql_exception $exception) {
  mysqli_rollback($mysqli);

  throw $exception;
}
?>

The output of the above code will be:

Autocommit is 0
Committed 2 rows in the database
Autocommit is 0
Committed 2 row in the database

❮ MySQLi Functions Reference