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

دليل دروس PHP الأساسية

دليل دروس PHP المتقدمة

PHP & MySQL

دليل مرجعي لPHP

استخدام دالة mysqli_rollback() في PHP مع أمثلة

دليل PHP MySQLi

يستعيد دالة mysqli_rollback() المعاملة الحالية

التعريف والاستخدام

يحتوي قاعدة بيانات MySQL على ميزة التحميل التلقائي للمعاملات، إذا قمت بفتحها، سيتم حفظ التغييرات التي تم إجراؤها في قاعدة البيانات تلقائيًا؛ إذا قمت بإغلاقها،则需要 استخدام دالة mysqli_commit() لحفظ التغييرات بشكل تعريفي.

mysqli_rollback();يقوم هذا الدالة بتر滚 الحالة الحالية للمعاملة إلى نقطة الحفظ الأخيرة (أو نقطة الحفظ المحددة).

النحو

mysqli_rollback($con, [$flags, $name]);

المعلمات

الترقيمالمعلمات والشرح
1

con(مطلوب)

هذا هو كائن يمثل الاتصال بمخدم MySQL Server.

2

flags(اختياري)

يمكن أن يكون أي من المعادلات التالية

  • MYSQLI_TRANS_COR_AND_CHAIN

  • MYSQLI_TRANS_COR_AND_NO_CHAIN

  • MYSQLI_TRANS_COR_RELEASE

  • MYSQLI_TRANS_COR_NO_RELEASE

3

name(اختياري)

هذه هي قيمة اسمية، عند توفيرها، تنفذ كـ ROLLBACK /* name */.

القيمة المرتجعة

يستعيد mysqli_rollback() قيمة بولية، إذا كانت العملية ناجحة، فإنهاصحيح،إلا إذا كانتغير صحيح.

إصدار PHP

تم إدخال هذه الدالة لأول مرة في إصدار PHP 5، وهي متاحة في جميع الإصدارات الأعلى.

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

يظهر هذا المثالmysqli_rollback();استخدام الدالة (أسلوب عملية)

<?php
   //إنشاء الاتصال
   $con = mysqli_connect("localhost", "root", "password", "mydb");
   //إعداد التسليم التلقائي على الحالة غير الصحيحة
   mysqli_autocommit($con, False);
   mysqli_query($con, "CREATE TABLE IF NOT EXISTS my_team(ID INT, First_Name VARCHAR(255), Last_Name VARCHAR(255), Place_Of_Birth VARCHAR(255), Country VARCHAR(255))");
   //إدراج السجلات في جدول 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')");
   $res = mysqli_query($con, "SELECT * FROM my_team");
   print("مجموع الملفات (عند التقدم):\t".mysqli_affected_rows($con)."\n");
   //حفظ التغييرات
   mysqli_commit($con);
   //قطع الجدول
   mysqli_query($con, "DELETE FROM my_team where id in(3,4)"); 
   $res = mysqli_query($con, "SELECT * FROM my_team");
   print("عدد الصفوف (قبل التراجع): ".mysqli_affected_rows($con)."\n");
   //تراجع
   mysqli_rollback($con);
   //محتويات الجدول
   $res = mysqli_query($con, "SELECT * FROM my_team");
   print("عدد الصفوف (بعد التراجع): ".mysqli_affected_rows($con));
   //إغلاق الاتصال
   mysqli_close($con);
?>

نتائج الإخراج

عدد الصفوف (عند التسليم): 4
عدد الصفوف (قبل التراجع): 2
عدد الصفوف (بعد التراجع): 4

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

نحوية اللغة الموجهة للكائنات لهذه الطريقة هي$con->rollback();以下是面向对象风格中此函数的示例;

//إنشاء الاتصال
$con = new mysqli("localhost", "root", "password", "mydb");
//إعداد التسليم التلقائي على الحالة غير الصحيحة
$con->autocommit(FALSE);
//إدخال سجل واحد في جدول players
$con->query("CREATE TABLE IF NOT EXISTS players(First_Name VARCHAR(255), Last_Name VARCHAR(255), Country VARCHAR(255))");
$con->query("insert into players values('Shikhar', 'Dhawan', 'India')");
$con->query("insert into players values('Jonathan', 'Trott', 'SouthAfrica')");
//حفظ النتيجة
$con->commit();
$con->query( "insert into players values('Kumara', 'Sangakkara', 'Srilanka')");
$con->query( "insert into players values('Virat', 'Kohli', 'India')");
//تراجع
$con->rollback();
$res = $con->query("SELECT * FROM players");
print_r($res);
//إغلاق الاتصال
$res = $con -> close();
?>

نتائج الإخراج

mysqli_result Object
(
    [current_field] => 0
    [field_count] => 3
    [lengths] =>
    [num_rows] => 2
    [type] => 0
)

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

إغلاق التحميل التلقائي، القيام ببعض الاستعلامات، تقديم الاستعلامات، ثم إلغاء المعاملة الحالية:

<?php
   $connection = mysqli_connect("localhost", "root", "password", "mydb");
   
   if (mysqli_connect_errno($connection)){
      echo "فشل الاتصال ب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_commit($connection);
   
   mysqli_query($connection, "INSERT INTO test VALUES ('Kalyan', 30)");
   
   mysqli_rollback($connection);
   mysqli_close($connection);
?>

بعد تنفيذ البرنامج أعلاه، إذا قمت بتحقق من الجدولtestإذا كان لديك محتوى، يمكنك رؤية السجلات المضافة كـ-

mysql> select * from test;
+---------+------+
| الاسم    | العمر |
+---------+------+
| Sharukh | 25    |
+---------+------+
1 سطر في مجموعة (0.00 ثانية)

دليل PHP MySQLi