Mysqli-rollback

提供:Dev Guides
移動先:案内検索

MySQLi-ロールバック

構文

bool mysqli_rollback ( mysqli $link [, int $flags [, string $name ]] )

定義と使い方

現在のトランザクションのセーブポイントのセットから名前付きセーブポイントを削除します。

次の例を試してください-

<?php
   $servername = "localhost:3306";
   $username = "root";
   $password = "";
   $dbname = "TUTORIALS";
   $tmp = NULL;
   $conn = new mysqli($servername, $username, $password, $dbname);

   if (!$conn->real_connect($servername, $username, $password, $dbname)) {
      die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
   }
   echo 'Success... ' . mysqli_get_host_info($conn) . "\n";

   mysqli_query($conn, "CREATE TABLE tutorials_test1 LIKE tutorials_auto");
   mysqli_query($conn, "ALTER TABLE tutorials_test1 Type = InnoDB");
   mysqli_query($conn, "INSERT INTO tutorials_test1 SELECT * FROM id LIMIT 50");
   mysqli_commit($conn);
   mysqli_query($conn, "DELETE FROM tutorials_test1");

   if ($result = mysqli_query($conn, "SELECT COUNT(*) FROM tutorials_test1")) {
      $row = mysqli_fetch_row($result);
      printf("%d rows in table tutorials_test1.\n", $row[0]);
      mysqli_free_result($result);
   }
   mysqli_rollback($conn);

   if ($result = mysqli_query($conn, "SELECT COUNT(*) FROM tutorials_test1")) {
      $row = mysqli_fetch_row($result);
      printf("%d rows in table tutorials_test1 (after rollback).\n", $row[0]);
      mysqli_free_result($result);
   }
   mysqli_query($conn, "DROP TABLE tutorials_test1");

   $conn->close();
?>

上記のコードのサンプル出力は次のようになります-

Success... localhost:3306 via TCP/IP 0 rows in table tutorials_test1.
0 rows in table tutorials_test1 (after rollback).