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 rows in set (0.00 sec)

مثال عبر الإنترنت

في أسلوب تحويل عالي المستوى، جملة هذه الطريقة تبدأ كما يلي $con-> autocommit()هذا مثال على كيفية استخدام هذه الوظيفة بأسلوب تحويل عالي المستوى؛

//建立连接
$con = new mysqli("localhost", "root", "password", "mydb");
//الإعداد التلقائي للتحويل على الحالة الحالية
$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;
+------------+-----------+-------------+
| الاسم الأول | الاسم الأخير | البلد         |
+------------+-----------+-------------+
| شيكار      | دهافان    | الهند        |
| جوناثان    | تروت      | جنوب أفريقيا |
+------------+-----------+-------------+
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;
+---------+------+
| الاسم   | العمر |
+---------+------+
| شاروخ  | 25   |
| كاليان | 30   |
+---------+------+
2 صفوف في المجموعة (0.00 ثانية)

دليل PHP MySQLi