လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PDO :: beginatransaction နှင့်အလိုအလျောက်တင်သွင်းမှု mode အကြားဆက်နွယ်မှုကိုခွဲခြမ်းစိတ်ဖြာခြင်း

PDO :: beginatransaction နှင့်အလိုအလျောက်တင်သွင်းမှု mode အကြားဆက်နွယ်မှုကိုခွဲခြမ်းစိတ်ဖြာခြင်း

gitbox 2025-05-28

PHP ၏ PDO (PHP ဒေတာအရာဝတ်ထုများကိုဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PHP ၏ PDO (PHP Data ords) ကိုအသုံးပြုသည့်အခါဒေတာရှေ့နောက်ညီညွတ်မှုနှင့်သမာဓိရှိခြင်းကိုသေချာစေရန်အတွက်ငွေပေးငွေယူသည်အဓိကယန္တရားတစ်ခုဖြစ်သည်။ PDO :: Beginransacingaction () သည်အရောင်းအ 0 ယ်များကိုစတင်ရန်ဘုံနည်းလမ်းဖြစ်သည်။ developer အတော်များများကအစပြုပြီးသည့်အခါဤလုပ်ဆောင်ချက်သည် Autocommit Mode ဟုခေါ်သော "Autocommit mode" နှင့်မည်သို့လုပ်ဆောင်ရမည်ကိုတွေးမိလိမ့်မည်။ ဤဆောင်းပါးသည်နှစ်ခုအနှံ့အကြားဆက်သွယ်မှုကိုလေ့လာပြီး၎င်းကိုဥပမာအားဖြင့်အသေးစိတ်လေ့လာလိမ့်မည်။

အလိုအလျောက်တင်သွင်းမှု mode ကိုမိတ်ဆက်

ဒေတာဘေ့စ်အများစုတွင် (ထိုကဲ့သို့သော MySQL ကဲ့သို့သော) တွင်ပုံမှန်အားဖြင့်လွတ်လပ်စွာကွပ်မျက်ခံရသော SQL ကြေငြာချက်တစ်ခုစီကိုလွတ်လပ်သောငွေပေးချေမှုအဖြစ်ကွပ်ကဲသည်။ ဒီအပြုအမူကို autocommit လို့ခေါ်တယ်။ တစ်နည်းပြောရလျှင်သင်အရောင်းအ 0 ယ်တစ်ခုကိုအသုံးမပြုပါက Database သည်ထည့်သွင်း ခြင်း , မွမ်းမံခြင်း ,

PDO :: beginransactionactransaction () အပြုအမူ

PDO :: GANTRANSANSESSANSESSAND ကိုသင်ခေါ်ဆိုသည့်အခါ PDO သည်လက်ရှိအလိုအလျောက်ကျူးလွန်သည့် mode ကိုအလိုအလျောက်ဖွင့်ပြီးငွေပေးငွေယူအသစ်တစ်ခုကိုအလိုအလျောက်ဖွင့်လိမ့်မည်။ ဤအချိန်တွင်နောက်ဆက်တွဲဒေတာဘေ့စ်သို့လုပ်ဆောင်မှုများအားလုံးကိုဒေ တာဘေ့စ ်သို့ရေးဆွဲခြင်း (ဥပမာ, update , ဖျက်ခြင်း ကဲ့သို့သော) ကို သင်အတိအလင်းခေါ်ဆိုသည်အထိချက်ချင်းတင်သွင်းမည်မဟုတ်ပါ တစ်နည်းပြောရလျှင်ဤလုပ်ဆောင်ချက်၏လုပ်ဆောင်မှုသည် "အလိုအလျောက်တင်သွင်းမှုကိုပိတ်ထားခြင်းနှင့်လက်စွဲစာအုပ်ကိုဖွင့်ရန်" ဖြစ်သည်။

ဤတွင်အလိုအလျောက်တင်ပြမှုပုံစံနှင့်၎င်း၏အဓိကဆက်ဆံရေးဖြစ်သည်။

  • begintransaction () ကိုမခေါ်ပါက ကြေငြာချက်တစ်ခုစီကိုအကောင်အထည်ဖော်ပြီးနောက်ချက်ချင်းတင်သွင်းပါ (အလိုအလျောက်တင်သွင်းမှု mode ကိုဖွင့်ထားသည်) ။

  • BeginTransactacnacnacnacnacingacting () ကိုခေါ်ပြီးနောက် - အလိုအလျောက်တင်သွင်းမှု mode ကိုပိတ်ပြီးငွေပေးငွေယူထိန်းချုပ်မှုအခြေအနေကိုထည့်ပါ။

အရောင်းအ 0 ယ်ပြုလုပ်ပြီးနောက် ( ကျူးလွန်သည် () ( သို့မဟုတ်) rollback ဖြစ်စေ ()) သို့မဟုတ် Rollback ဖြစ်စေ () ) ကိုအကောင်အထည်ဖော်ပြီးနောက် PDO သည်အလိုအလျောက် COMPIT mode သို့အလိုအလျောက်ပြန်ယူလိမ့်မည်။

သရုပ်ပြ sample

 <?php
try {
    $pdo = new PDO("mysql:host=localhost;dbname=testdb", "username", "password");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // ငွေပေးငွေယူတစ်ခုစတင်ပါ,အလိုအလျောက်တင်ပြချက်ပိတ်ထားသည်
    $pdo->beginTransaction();

    // ပထမမှတ်တမ်းကိုထည့်ပါ
    $pdo->exec("INSERT INTO users (name, email) VALUES ('Alice', '[email protected]')");

    // ဒုတိယစံချိန်ကိုထည့်ပါ
    $pdo->exec("INSERT INTO users (name, email) VALUES ('Bob', '[email protected]')");

    // တင်သွင်းမှုတင်သွင်း
    $pdo->commit();
    echo "ဒေတာအောင်မြင်စွာရေးသားခဲ့သည်。";

} catch (Exception $e) {
    $pdo->rollBack(); // ခြွင်းချက်ရှိလျှင်,ပြန်အရောင်းအလှိမ့်
    echo "ငွေပေးငွေယူပျက်ကွက်:" . $e->getMessage();
}
?>

အထက်ပါကုဒ်များတွင်ထည့်သွင်းထားသောမှတ်တမ်းကို Database သို့အမှန်တကယ်ရေးသားပြီးနောက်ကိုအောင်မြင်စွာ ခေါ်ယူပြီး မှသာရေးသားလိမ့်မည်။ အကယ်. ခြွင်းချက်တစ်ခုသည်တစ်ဝက်ကိုပြုလုပ်ပါက Rollback () ကို ခေါ်ဆိုခြင်း () ကိုခေါ်ဆိုခြင်းပြောင်းလဲမှုများအားလုံးကိုဖျက်သိမ်းလိမ့်မည်။ အလိုအလျောက်တင်သွင်းမှု mode ကိုပိတ်ထားသည့်အခါလုပ်ငန်းစဉ်တစ်ခုလုံးကိုဖြစ်ပေါ်သည်။

ငွေပေးငွေယူလုပ်ဆောင်ချက်များကိုခေါ်ဆိုပြီးနောက်အပြုအမူလေ့လာရေး

SQL ထုတ်ပြန်ချက်များမှတဆင့်အလိုအလျောက်တင်သွင်းမှုပုံစံတွင်ပြောင်းလဲမှုများကိုလေ့လာနိုင်သည်။

 $pdo->query("SELECT @@autocommit")->fetchColumn(); // ပြန်လာ 1 အပေါ်ညွှန်ပြ,0 အနီးကပ်ဖော်ပြသည်

BeginTransactionacingacingacingacingacing () အပြေးပြီးနောက်ရှာဖွေမှုသည် 0 င် 0 င် 0 င်လာနိုင်သည်။ ဒီပြည်နယ်သည်ငွေပေးငွေယူပြီးဆုံးသည်အထိကြာရှည်လိမ့်မည်။

PDO :: setatribute (PDO :: Att_Autocommit) မှကွဲပြားခြားနားမှုများ

အချို့သောယာဉ်မောင်းများတွင်သင်သည် pdo :: setattribute () ကို သုံးနိုင်သည်။ ဥပမာအားဖြင့်အလိုအလျောက်ကျူးလွန်ခြင်းအခြေအနေကိုသတ်မှတ်ရန်

 $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, false);

သို့သော်အကြောင်းပြချက်နှစ်ခုကြောင့်၎င်းကိုမထောက်ခံပါ။

  1. PDO Drivers အားလုံးသည်ဤပိုင်ဆိုင်မှုကိုမထောက်ပံ့ပါ။ မလျော်ကန်သောအသုံးပြုမှုသည်လိုက်လျောညီထွေကိစ္စများကိုဖြစ်ပေါ်စေနိုင်သည်။

  2. Cross-platform platform ကိုက်ညီမှုရှိစေရန်အတွက်စံထုတ်ပေး သော APIs (i.E. begintransaction) ကို အသုံးပြုရန်အတွက်ငွေပေးချေမှုအခြေအနေကိုအသုံးပြုရန်အကြံပြုသည်။

အကျဉ်းချုပ်

  • PDO :: gentinatransaction ၏ function ကို () သည် အလိုအလျောက်ကျူးလွန်သော mode ကိုပိတ်ထားပြီးအရောင်းအ 0 ယ်များကိုကိုယ်တိုင်စီမံခန့်ခွဲရန်ဖြစ်သည်။

  • အဘယ်သူမျှမငွေပေးငွေယူမသုံးသောအခါအလိုအလျောက်ကျူးလွန် mode ကိုပုံမှန်အားဖြင့်ဖွင့်ထားသည်;

  • ကျူးလွန်သည်နှင့်တပြိုင်နက် () သို့မဟုတ် rollback () ကိုခေါ်သည်။ ငွေပေးငွေယူသည်အဆုံးနှင့်အလိုအလျောက်ကျူးလွန်လေ့ရှိသည်။

  • အရောင်းအ 0 ယ်များကိုအသုံးပြုခြင်းသည်ဒေတာစစ်ဆင်ရေးများ၏လုံခြုံရေးနှင့်တသမတ်တည်းကိုတိုးတက်စေနိုင်သည်။

Beginningactransaction () နှင့်အလိုအလျောက်တင်သွင်းမှုအကြားဆက်နွယ်မှုကိုနားလည်ခြင်းသည်သင့်အားကြံ့ခိုင်ပြီးထိန်းချုပ်နိုင်သောဒေတာဘေ့စ်စစ်ဆင်ရေးကုဒ်ကိုရေးရန်ကူညီလိမ့်မည်။ သတိရပါ, အရောင်းအ 0 ယ်များသည်စွမ်းဆောင်ရည်၏ရန်သူများမဟုတ်ဘဲနာယကသူတော်စင်၏နာယကသူတော်စင်ဖြစ်သည်။