هل من الممكن القيام بمعاملات قاعدة بيانات MySQL واستدادت مع PHP؟

StackOverflow https://stackoverflow.com/questions/934254

  •  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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top