ငွေပေးငွေယူ၏အခြေခံအယူအဆမှာ "အောင်မြင်မှုအားလုံးဖြစ်စေ, အကယ်. ငွေသွင်းခြင်းမအောင်မြင်ပါကငွေပေးငွေယူတွင်လုပ်ငန်းများအားလုံးကိုပြန်လှိမ့်ချလိမ့်မည်။ အရောင်းအ 0 ယ်များသည်များသောအားဖြင့်အောက်ပါဝိသေသလက်ခဏာလေးခု (အက်ဆစ်နိယာမ) ပါ 0 င်သည်။
Utticity - ငွေပေးငွေယူတစ်ခုရှိစစ်ဆင်ရေးအားလုံးသည်ပြီးစီးခြင်းသို့မဟုတ်မပြီးဆုံးပါ။
ရှေ့နောက်ညီညွတ်မှု - ငွေပေးငွေယူသည်ဒေတာဗေ့စ်ကိုတသမတ်တည်းပြည်နယ်တစ်ခုမှတစ်ခုသို့ကူးပြောင်းရမည်။
အထီးကျန်ခြင်း - ငွေပေးငွေယူတစ်ခု၏ကွပ်မျက်ခြင်းကိုအခြားအရောင်းအ 0 ယ်များကနှောင့်ယှက်ခြင်းမပြုသင့်ပါ။
ကြာရှည်ခံမှု - ငွေပေးငွေယူကတိကဝတ်ပြုထားပြီးသည်နှင့်ဒေတာသည်အမြဲတမ်းဖြစ်သင့်ပြီးပျောက်ဆုံးသွားမည်မဟုတ်ချေ။
MySQL databases များတွင်အရောင်းအ 0 ယ ်သည်အရောင်းအ 0 ယ် များကိုထောက်ပံ့သောကြောင့် InnoDB သိုလှောင်မှုအင်ဂျင်ကိုအဓိကအားဖြင့်မှီခိုနေရသည်။
PHP တွင် MySQLI :: STORT_TRANSATESATE function ကိုအရောင်းအဝယ်ပြုလုပ်ရန်အသုံးပြုသည်။ ဤလုပ်ဆောင်ချက်ကိုဖုန်းဆက်ပြီးနောက် MySQL သည် developer ကိုအတိအလင်းခေါ်ဆိုသည်အထိအချက်အလက်များကိုချက်ချင်းပြန်ပို့ခြင်းသို့မဟုတ်လှိ မ့ ်ခြင်းမပြုဘဲငွေပေးချေမှုကိုချက်ချင်းပြန်ပို့ခြင်းသို့မဟုတ် လှိမ့်ခြင်း မပြုဘဲငွေပေးချေမှုကိုစတင်မည်။
<span><span>mysqli::</span><span><span class="hljs-title function_ invoke__">begin_transaction</span></span><span>();
</span></span>
အဆိုပါ function ကိုအဘယ်သူမျှမ parameters တွေကိုမျှမပါရှိပြီးပြန်လာတန်ဖိုးသည် ပျက်ပြယ် သည်, ၎င်းသည်ရလဒ်မရှိပါ။ ၎င်းကိုအဓိကအားဖြင့်အရောင်းအ 0 ယ်များကိုစတင်ရန်အသုံးပြုသည်။
ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ခြင်း - ပထမအချက်မှာ MySQLI_Connect သို့မဟုတ် Object-Oriented နည်းလမ်းမှတဆင့်ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုတည်ဆောက်ရန်လိုအပ်သည်။
ငွေပေးငွေယူကိုစတင်ပါ ။ ငွေပေးငွေ ယူ ကိုစတင်ရန်စတင်ပါ။
SQL operations များကိုလုပ်ဆောင်ပါ - ဒေတာများကိုထည့်သွင်းခြင်း, မွမ်းမံခြင်း,
ကတိကဝတ်ပြုခြင်းသို့မဟုတ်ဖြန့်ချိခြင်း - ကွပ်မျက်ရလဒ်အပေါ် အခြေခံ. ကျူးလွန် ခြင်း ,
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ဆက်သွယ်မှုတစ်ခုဖန်တီးပါ</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);
</span><span><span class="hljs-comment">// ဆက်သွယ်မှုကိုစစ်ဆေးပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"ဆက်သွယ်မှုမအောင်မြင်ပါ: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// ငွေပေးငွေယူတစ်ခုစတင်ပါ</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">begin_transaction</span></span><span>();
</span><span><span class="hljs-keyword">try</span></span><span> {
</span><span><span class="hljs-comment">// ကရိယာတန်းဆာ SQL ခဲှစိတ်ကုသ</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO users (name, email) VALUES ('Alice', '[email protected]')"</span></span><span>);
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"UPDATE users SET email = '[email protected]' WHERE name = 'Bob'"</span></span><span>);
</span><span><span class="hljs-comment">// အဘယ်သူမျှမအမှားရှိလျှင်,တင်သွင်းမှုတင်သွင်း</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">commit</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ငွေပေးငွေယူတင်သွင်းမှုအောင်မြင်သော!"</span></span><span>;
} </span><span><span class="hljs-keyword">catch</span></span><span> (</span><span><span class="hljs-built_in">Exception</span></span><span> </span><span><span class="hljs-variable">$e</span></span><span>) {
</span><span><span class="hljs-comment">// အမှားတစ်ခုဖြစ်ပေါ်လျှင်,ပြန်အရောင်းအလှိမ့်</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">rollback</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ငွေပေးငွေယူ Loverback: "</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}
</span><span><span class="hljs-comment">// ဆက်သွယ်မှုကိုပိတ်ပါ</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
အရောင်းအ 0 ယ်များကိုအသုံးပြုသောအခါအမှားကိုင်တွယ်ခြင်းသည်အရေးကြီးသည်။ ကျွန်ုပ်တို့သည်များသောအားဖြင့် try-catch statements မှတဆင့်ခြွင်းချက်များနှင့်အမှားတစ်ခုဖြစ်ပေါ်သည့်အခါငွေပေးငွေယူကိုပြန်လှိမ့်။ ဤအချက်သည်စစ်ဆင်ရေးကိုအလယ်တွင်ပျက်ကွက်လျှင်ပင်ယခင်စစ်ဆင်ရေးအားလုံးကိုရုပ်သိမ်းခြင်းနှင့်ဒေတာဘေ့စ်ရှေ့နောက်ညီမှုကိုဆက်လက်ထိန်းသိမ်းထားလိမ့်မည်။
အထက်ပါကုဒ်တွင် SQL operations များကိုပြုလုပ်ရာတွင်အမှားတစ်ခုပြုလုပ်ရန် (ဒေတာဘေ့စ်ကန့်သတ်ချက်ပ conflicts ိပက်ခများကဲ့သို့) သည် ဤအမှားကိုဖမ်းယူပြီး ဒေါ်လာ MySQLI-> Rollback မှတဆင့်ဒေတာဘေ့စ်လုပ်ငန်းများကိုပြန်လှိမ့်ချလိမ့်မည်။
ငွေပေးချေမှုကိုကျူးလွန်သော ငွေပေးချေမှုအားလုံးကိုအောင်မြင်စွာကွပ်မျက်ခံရသောအခါ () () () ) ကိုငွေပေးချေမှုကိုတင်သွင်းရန်တောင်းဆိုခြင်းကိုပြုလုပ်နိုင်သည်။ ဆိုလိုသည်မှာ database တွင်အမြဲတမ်းကယ်တင်ခြင်းသို့ရောက်လိမ့်မည်။
RollBack : အရောင်းအ 0 ယ်တွင်အမှားတစ်ခုဖြစ်ပါက SQL operations အားလုံးကိုပြန်လည်ထူထောင်ရန်နှင့်ငွေပေးချေမှုမပြုမီ Database ကိုပြန်လည်ထူထောင်ရန်အတွက် Rollback () နည်းလမ်းကိုဖုန်းဆက်ပါ။
ကျူးလွန်ခြင်းနှင့် Rollback သည်ငွေပေးငွေယူထိန်းချုပ်မှုအတွက်သော့ချက်ဖြစ်ပြီးငွေပေးငွေယူ၏နောက်ဆုံးရလဒ်ကိုဆုံးဖြတ်ရန်သော့ချက်ဖြစ်သည်။
<span><span><span class="hljs-comment">// တင်သွင်းမှုတင်သွင်း</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">commit</span></span><span>();
</span><span><span class="hljs-comment">// ပြန်အရောင်းအလှိမ့်</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">rollback</span></span><span>();
</span></span>
အလိုအလျောက်တင်သွင်းမှု Mode : MySQL သည်အလိုအလျောက်တင်သွင်းမှု mode ကိုပုံမှန်အားဖြင့်ဖွင့်သည်။ ဆိုလိုသည်မှာ SQL ကြေငြာချက်တစ်ခုစီကိုကွပ်မျက်ခံရပြီးနောက်ချက်ချင်းတင်သွင်းလိမ့်မည်။ အကယ်. သင်အရောင်းအ 0 ယ်များကိုအသုံးပြုလိုပါက Autocommit Mode ကိုကိုယ်တိုင်ပိတ်ရန်လိုအပ်သည်။ MySQLI-> Autommit (fallocommit) မှတဆင့်အလိုအလျောက်တင်သွင်းမှုကိုပိတ်ထားနိုင်သည်။
ဥပမာ -
<span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">autocommit</span></span><span>(</span><span><span class="hljs-literal">FALSE</span></span><span>); </span><span><span class="hljs-comment">// အလိုအလျောက်တင်ပြချက်ကိုပိတ်ပါ</span></span><span>
</span></span>
အရောင်းအ 0 ယ်လုပ်ငန်းများ၏အသိုက် - MySQL သည်အစစ်အမှန်အသိုက်အရောင်းအ 0 ယ်များကိုမထောက်ခံပါ။ အကယ်. သင်သည်ငွေပေးငွေယူတစ်ခုတွင်အခြားငွေပေးငွေယူတစ်ခုစတင်ပါကပြည်တွင်းငွေပေးငွေယူတစ်ခု၏ကျူးလွန်မှုသို့မဟုတ် rollback သည်ပြင်ပငွေပေးငွေယူကိုအကျိုးသက်ရောက်မည်မဟုတ်ပါ။
သက်ဆိုင်သောတက်(ဂ်)များ:
mysqli