PHP ၏ PDO (PHP ဒေတာအရာဝတ်ထုများကိုဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PHP ၏ PDO (PHP Data ords) ကိုအသုံးပြုသည့်အခါဒေတာရှေ့နောက်ညီညွတ်မှုနှင့်သမာဓိရှိခြင်းကိုသေချာစေရန်အတွက်ငွေပေးငွေယူသည်အဓိကယန္တရားတစ်ခုဖြစ်သည်။ PDO :: Beginransacingaction () သည်အရောင်းအ 0 ယ်များကိုစတင်ရန်ဘုံနည်းလမ်းဖြစ်သည်။ developer အတော်များများကအစပြုပြီးသည့်အခါဤလုပ်ဆောင်ချက်သည် Autocommit Mode ဟုခေါ်သော "Autocommit mode" နှင့်မည်သို့လုပ်ဆောင်ရမည်ကိုတွေးမိလိမ့်မည်။ ဤဆောင်းပါးသည်နှစ်ခုအနှံ့အကြားဆက်သွယ်မှုကိုလေ့လာပြီး၎င်းကိုဥပမာအားဖြင့်အသေးစိတ်လေ့လာလိမ့်မည်။
ဒေတာဘေ့စ်အများစုတွင် (ထိုကဲ့သို့သော MySQL ကဲ့သို့သော) တွင်ပုံမှန်အားဖြင့်လွတ်လပ်စွာကွပ်မျက်ခံရသော SQL ကြေငြာချက်တစ်ခုစီကိုလွတ်လပ်သောငွေပေးချေမှုအဖြစ်ကွပ်ကဲသည်။ ဒီအပြုအမူကို autocommit လို့ခေါ်တယ်။ တစ်နည်းပြောရလျှင်သင်အရောင်းအ 0 ယ်တစ်ခုကိုအသုံးမပြုပါက Database သည်ထည့်သွင်း ခြင်း , မွမ်းမံခြင်း ,
PDO :: GANTRANSANSESSANSESSAND ကိုသင်ခေါ်ဆိုသည့်အခါ PDO သည်လက်ရှိအလိုအလျောက်ကျူးလွန်သည့် mode ကိုအလိုအလျောက်ဖွင့်ပြီးငွေပေးငွေယူအသစ်တစ်ခုကိုအလိုအလျောက်ဖွင့်လိမ့်မည်။ ဤအချိန်တွင်နောက်ဆက်တွဲဒေတာဘေ့စ်သို့လုပ်ဆောင်မှုများအားလုံးကိုဒေ တာဘေ့စ ်သို့ရေးဆွဲခြင်း (ဥပမာ, update , ဖျက်ခြင်း ကဲ့သို့သော) ကို သင်အတိအလင်းခေါ်ဆိုသည်အထိချက်ချင်းတင်သွင်းမည်မဟုတ်ပါ ။ တစ်နည်းပြောရလျှင်ဤလုပ်ဆောင်ချက်၏လုပ်ဆောင်မှုသည် "အလိုအလျောက်တင်သွင်းမှုကိုပိတ်ထားခြင်းနှင့်လက်စွဲစာအုပ်ကိုဖွင့်ရန်" ဖြစ်သည်။
ဤတွင်အလိုအလျောက်တင်ပြမှုပုံစံနှင့်၎င်း၏အဓိကဆက်ဆံရေးဖြစ်သည်။
begintransaction () ကိုမခေါ်ပါက ကြေငြာချက်တစ်ခုစီကိုအကောင်အထည်ဖော်ပြီးနောက်ချက်ချင်းတင်သွင်းပါ (အလိုအလျောက်တင်သွင်းမှု mode ကိုဖွင့်ထားသည်) ။
BeginTransactacnacnacnacnacingacting () ကိုခေါ်ပြီးနောက် - အလိုအလျောက်တင်သွင်းမှု mode ကိုပိတ်ပြီးငွေပေးငွေယူထိန်းချုပ်မှုအခြေအနေကိုထည့်ပါ။
အရောင်းအ 0 ယ်ပြုလုပ်ပြီးနောက် ( ကျူးလွန်သည် () ( သို့မဟုတ်) rollback ဖြစ်စေ ()) သို့မဟုတ် Rollback ဖြစ်စေ () ) ကိုအကောင်အထည်ဖော်ပြီးနောက် PDO သည်အလိုအလျောက် COMPIT mode သို့အလိုအလျောက်ပြန်ယူလိမ့်မည်။
<?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 :: setattribute () ကို သုံးနိုင်သည်။ ဥပမာအားဖြင့်အလိုအလျောက်ကျူးလွန်ခြင်းအခြေအနေကိုသတ်မှတ်ရန်
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, false);
သို့သော်အကြောင်းပြချက်နှစ်ခုကြောင့်၎င်းကိုမထောက်ခံပါ။
PDO Drivers အားလုံးသည်ဤပိုင်ဆိုင်မှုကိုမထောက်ပံ့ပါ။ မလျော်ကန်သောအသုံးပြုမှုသည်လိုက်လျောညီထွေကိစ္စများကိုဖြစ်ပေါ်စေနိုင်သည်။
Cross-platform platform ကိုက်ညီမှုရှိစေရန်အတွက်စံထုတ်ပေး သော APIs (i.E. begintransaction) ကို အသုံးပြုရန်အတွက်ငွေပေးချေမှုအခြေအနေကိုအသုံးပြုရန်အကြံပြုသည်။
PDO :: gentinatransaction ၏ function ကို () သည် အလိုအလျောက်ကျူးလွန်သော mode ကိုပိတ်ထားပြီးအရောင်းအ 0 ယ်များကိုကိုယ်တိုင်စီမံခန့်ခွဲရန်ဖြစ်သည်။
အဘယ်သူမျှမငွေပေးငွေယူမသုံးသောအခါအလိုအလျောက်ကျူးလွန် mode ကိုပုံမှန်အားဖြင့်ဖွင့်ထားသည်;
ကျူးလွန်သည်နှင့်တပြိုင်နက် () သို့မဟုတ် rollback () ကိုခေါ်သည်။ ငွေပေးငွေယူသည်အဆုံးနှင့်အလိုအလျောက်ကျူးလွန်လေ့ရှိသည်။
အရောင်းအ 0 ယ်များကိုအသုံးပြုခြင်းသည်ဒေတာစစ်ဆင်ရေးများ၏လုံခြုံရေးနှင့်တသမတ်တည်းကိုတိုးတက်စေနိုင်သည်။
Beginningactransaction () နှင့်အလိုအလျောက်တင်သွင်းမှုအကြားဆက်နွယ်မှုကိုနားလည်ခြင်းသည်သင့်အားကြံ့ခိုင်ပြီးထိန်းချုပ်နိုင်သောဒေတာဘေ့စ်စစ်ဆင်ရေးကုဒ်ကိုရေးရန်ကူညီလိမ့်မည်။ သတိရပါ, အရောင်းအ 0 ယ်များသည်စွမ်းဆောင်ရည်၏ရန်သူများမဟုတ်ဘဲနာယကသူတော်စင်၏နာယကသူတော်စင်ဖြစ်သည်။