هل من الممكن القيام بمعاملات قاعدة بيانات MySQL واستدادت مع PHP؟
-
06-09-2019 - |
سؤال
مثال: إجراء عملية نقل الدفع من مستخدم A إلى المستخدم B. حساب المستخدم A: -10 USD حساب المستخدم B: +10 USD
إذا كانت هناك معاملة، وشيء خاطئ، فإن كل شيء يتم التراجع عنه. لذلك مع المعاملات، لن يحدث ذلك حساب المستخدم A يحصل انخفض بنسبة 10، في حين أن حساب المستخدم B لا يزداد بنسبة 10.
أعرف أن الناس Java يستخدمون المعاملات والانكرات في كل مكان. لكنني لم أسمع أبدا من الرجال PHP القيام بذلك.
لا يوجد حل صحيح
نصائح أخرى
$db = new mysqli("localhost", "", "", "");
$db->autocommit(FALSE);
if ($db->query("INSERT ..."))
$db->commit();
else
$db->rollback();
تأكد من استخدام الجدول الخاص بك InnoDB
محرك: MyISAM
لا يدعم المعاملات.
تعليق تحديث:
InnoDB
هو واحد من اثنين من محركات التخزين الرئيسية المستخدمة من قبل MySQL
, والآخر يجري MyISAM
.
MySQL
يأتي مع InnoDB
الدعم الذي تم تجميعه بشكل افتراضي وفي الواقع يستغرق الأمر بعض الجهد لتعطيله.
أنا لم أسمع قط MySQL
مع InnoDB
تعطيل حتى بأرخص المهاجب.
إذا كنت تستخدم PDO، فإنه يحتوي أيضا على دعم المعاملات
http://us2.php.net/manual/en/pdo.begintransaction.ph.
كما تم فقده بالفعل، تأكد من استخدام محرك تخزين InnoDB.