English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP基本教程

PHP上級教程

PHP & MySQL

PHPリファレンスマニュアル

PHP mysqli_autocommit()関数の用法と例

PHP MySQLi リファレンスマニュアル

mysqli_autocommit()関数は、現在のデータベース接続の自動コマンドコミットトランザクションモードを開いたり閉じたりします。

定義と用法

MySQLデータベースには、自動コミットという機能があります。これをオンにすると、データベースに保存された変更が自動的に保存されます;オフにすると、変更を明示的に保存する必要があります。mysqli_autocommit() この関数は、現在のデータベース接続の自動トランザクションコミット状態を確認するために、このSQLクエリを実行できますSELECT @@autocommit 。

この関数は布尔値を引数として受け入れます。trueこの関数に渡すと、自動コミットトランザクションモードを有効にします;渡さない場合false、それでは自動コミットトランザクションモードを閉じます。

構文

mysqli_autocommit($con, $mode);

パラメータ

序号パラメータ及び説明
1

con(必須)

これはMySQL Serverとの接続を表すオブジェクトです。

2

mode(必須)

これは自動コミットトランザクションモードを開くかどうかを示す布尔値です。

返り値

PHP mysqli_autocommit()関数は布尔値を返します。成功時にはtrue、失敗時にはfalse

コメントとヒント

 このメソッドは、トランザクション処理をサポートしていないフォームクエリ(例えば、MyISAMやISAM)では効果がありません。

PHPバージョン

この関数は最初にPHPバージョン5のバージョンで導入され、すべての上位バージョンで使用できます。

オンライン例

mydbデータベースにmy_teamという名前のテーブルを作成した場合、以下のように見られます-

CREATE TABLE my_team(
   ID INT PRIMARY KEY AUTO_INCREMENT,
   First_Name VARCHAR(255), 
   Last_Name VARCHAR(255), 
   Place_Of_Birth VARCHAR(255), 
   Country VARCHAR(255)
);

以下の例では、mysqli_autocommit()関数の使用法(手続き型スタイルで)-

<?php
   //接続を確立します
   $con = mysqli_connect("localhost", "root", "password", "mydb");
   //自動コミットをfalseに設定します
   mysqli_autocommit($con, False);
   //レコードをmy_teamテーブルに挿入します
   mysqli_query($con, "insert into my_team values(1, 'Shikhar', 'Dhawan', 'Delhi', 'India')");
   mysqli_query($con, "insert into my_team values(2, 'Jonathan', 'Trott', 'CapeTown', 'SouthAfrica')");
   mysqli_query($con, "insert into my_team values(3, 'Kumara', 'Sangakkara', 'Matale', 'Srilanka')");
   mysqli_query($con, "insert into my_team values(4, 'Virat', 'Kohli', 'Delhi', 'India')");
   //テーブルの内容を確認します
   $result = mysqli_query($con, "SELECT * FROM my_team");
   print_r($result);
   //接続を閉じる
   mysqli_close($con);
?>

結果を出力します

mysqli_result Object
(
    [current_field] => 0
    [field_count] => 5
    [lengths] =>
    [num_rows] => 4
    [type] => 0
)

前の例で自動コミットオプションをオフにしていましたので、レコードの追加はデータベースに保存されず、MySQLでテーブルの内容を確認すると、テーブルが空になります。以下のように見られます;

mysql> select * from my_team;
Empty set (0.00 sec)

データベースの変更を保存するには、プログラムの終わりにmysqli_commit()関数を使用して変更をコミットする必要があります

mysqli_commit($con);

my_teamテーブルの内容を確認すると、挿入されたレコードが以下のように見られます-

mysql> select * from my_team;
+----+------------+------------+----------------+-------------+
| ID  | First_Name  | Last_Name  | Place_Of_Birth  | Country  |
+----+------------+------------+----------------+-------------+
|  1 | Shikhar  | Dhawan  | Delhi  | India  |
|  2 | Jonathan  | Trott  | CapeTown  | SouthAfrica  |
|  3 | Kumara  | Sangakkara | Matale  | Srilanka  |
|  4 | Virat  | Kohli  | Delhi  | India  |
+----+------------+------------+----------------+-------------+
4 セット内の行(0.00秒)

オンライン例

オブジェクト指向スタイルでの方法の構文は以下の通りです $con-> autocommit()以下は、オブジェクト指向スタイルでのこの関数の例です;

//接続を確立します
$con = new mysqli("localhost", "root", "password", "mydb");
//自動コミットをtrueに設定します
$con-> autocommit(FALSE);
//レコードをmy_teamテーブルに挿入します
$con-> query("insert into my_team values(1, 'Shikhar', 'Dhawan', 'Delhi', 'India')");
$con-> query("insert into my_team values(2, 'Jonathan', 'Trott', 'CapeTown', 'SouthAfrica')");
$con-> query("insert into my_team values(3, 'Kumara', 'Sangakkara', 'Matale', 'Srilanka')");
$con-> query("insert into my_team values(4, 'Virat', 'Kohli', 'Delhi', 'India')");
//テーブルの内容を確認します
$result = $con-> query("SELECT * FROM my_team");
print_r($result);
//結果を保存します
$con-> commit();
//接続を閉じる
$con -> close();
?>

結果を出力します

mysqli_result Object
(
    [current_field] => 0
    [field_count] => 5
    [lengths] =>
    [num_rows] => 4
    [type] => 0
)

オンライン例

mysqli_autocommit()関数は呼び出し時にcommit()としても使用できます。これはクエリの結果をデータベースに保存を待ちます:

//接続を確立します
$con = mysqli_connect("localhost", "root", "password", "mydb");
//テーブルを作成します
mysqli_query($con, "Create table players (First_Name VARCHAR(255), Last_Name VARCHAR(255), Country VARCHAR(255))
//自動コミットをfalseに設定します
mysqli_autocommit($con, False);
//レコードをmy_teamテーブルに挿入します
mysqli_query($con, "insert into players values('Shikhar', 'Dhawan', 'India');")
mysqli_query($con, "insert into players values('Jonathan', 'Trott', 'SouthAfrica');")
mysqli_autocommit($con, TRUE);
//接続を閉じる
mysqli_close($con);
?>

プログラムを実行した後、以下を確認してください players の内容が確認できる場合は、追加されたレコードを以下のように観察できます-

mysql> select * from players;
+------------+-----------+-------------+
| First_Name | Last_Name | Country     |
+------------+-----------+-------------+
| Shikhar    | Dhawan    | India       |
| Jonathan   | Trott     | SouthAfrica |
+------------+-----------+-------------+
2 セット内の行(0.00秒)

オンライン例

<?php
   $connection = mysqli_connect("localhost", "root", "password", "mydb");
   
   if (mysqli_connect_errno($connection)){
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
   }
   
   mysqli_autocommit($connection,FALSE);   
   
   mysqli_query($connection, "create table test(Name VARCHAR(255), Age INT)");   
   
   mysqli_query($connection, "INSERT INTO test VALUES ('Sharukh', 25)");
   mysqli_query($connection, "INSERT INTO test VALUES ('Kalyan', 30)");
   
   mysqli_commit($connection);
   mysqli_close($connection);
?>

上記のプログラムを実行した後、テーブルtestの内容が確認できる場合は、挿入されたレコードが以下の通りです-

mysql> select * from test;
+---------+------+
| Name    | Age  |
+---------+------+
| Sharukh |   25 |
| Kalyan  |   30 |
+---------+------+
2 セット内の行(0.00秒)

PHP MySQLi リファレンスマニュアル