PHP တွင် MySQLI extension သည် MySQL ဒေတာဘေ့စ်ကိုအသုံးပြုသောအခါဒေတာဘေ့စ်နှင့်အပြန်အလှန်ဆက်သွယ်မည့်အသုံးအများဆုံးကိရိယာတစ်ခုဖြစ်သည်။ ဒေတာဘေ့စ်လုပ်ငန်းများလိုအပ်သည့်အရောင်းအ 0 ယ်များလိုအပ်သည့်အခါ MySQLI :: STORT_TRANSAGE Method သည်ငွေပေးငွေယူ၏အစကိုထိန်းချုပ်ရန်ယန္တရားတစ်ခုဖြစ်သည်။ သို့သော်အရောင်းအ 0 ယ်များဖွင့်လှစ်ခြင်းအပြင်ငွေပေးချေမှုတစ်ခု၏အထီးကျန်မှုသည်အလွန်အရေးကြီးသောထည့်သွင်းစဉ်းစားခြင်းဖြစ်သည်။
ဤဆောင်းပါးသည် MySQLI :: Instrowringaction တွင်အထီးကျန်ခြင်း၏အထီးကျန်မှုအဆင့်ကိုမည်သို့ညှိနှိုင်းရမည်ကိုစူးစမ်းလေ့လာနိုင်သည်။
ငွေပေးငွေယူအထီးကျန်မှုအဆင့်သည်အခြားအရောင်းအ 0 ယ်များအားငွေပေးချေမှု၏မြင်နိုင်မှုကိုသတ်မှတ်သည်။ ကွဲပြားခြားနားသောအထီးကျန်မှုအဆင့်ဆင့်သည်ငွေပေးငွေယူကွပ်မျက်ခံရသောအခါအခြားတစ်ပြိုင်နက်တည်းအရောင်းအ 0 ယ်များနှင့်အပြန်အလှန်ဆက်သွယ်မှုကိုမည်သို့ဆက်သွယ်သည်ကိုဆုံးဖြတ်သည်။ အဓိကအားဖြင့်အရောင်းအဝယ်အထီးကျန်မှုအဆင့် 4 ခုရှိသည်။
အငြင်းအခုံ ဖတ်ရန်အဆင်သင့် - အနိမ့်ဆုံးအထီးကျန်မှုအဆင့်သည်အရောင်းအ 0 ယ်များကိုအခြားသတ်မှတ်ထားသည့်အရောင်းအ 0 ယ်များမှအချက်အလက်များကိုဖတ်ရန်ခွင့်ပြုသည်။ ၎င်းသည်ညစ်ပတ်စာဖတ်ခြင်း, ထပ်ခါတလဲလဲဖတ်ရှုခြင်းများကိုဖြစ်ပေါ်စေနိုင်သည်။
ကျူးလွန်သောဖတ်ပါ (ကျူးလွန်သည်) : အရောင်းအ 0 ယ်များသည်ကျူးလွန်သောအချက်အလက်များကိုသာဖတ်နိုင်သည်။ ညစ်ပတ်စာဖတ်ခြင်းကိုရှောင်ရှားသော်လည်းသင်ထပ်ခါတလဲလဲစာမဖတ်နိုင်သောစာဖတ်ခြင်းနှင့် Phantom စာဖတ်ခြင်းကိုသင်ကြုံတွေ့ရဆဲဖြစ်နိုင်သည်။
ထပ်ခါတလဲလဲဖတ်ရှုခြင်း - ငွေပေးငွေယူကွပ်မျက်စဉ်အတွင်းအတန်းဒေတာများကိုဖတ်ရှုနိုင်ပြီးအခြားအရောင်းအ 0 ယ်များသည်ဤအတန်းများကိုမပြုပြင်နိုင်ပါ။ ညစ်ပတ်စာဖတ်ခြင်းနှင့်ထပ်ခါတလဲလဲမဟုတ်သောစာဖတ်ခြင်းကိုရှောင်ရှားနိုင်သော်လည်း Phantom စာဖတ်ခြင်းကိုဆက်လက်ဖြစ်ပေါ်နိုင်သည်။
serializable (serializable) - အမြင့်ဆုံးအထီးကျန်အဆင့်, အရောင်းအ 0 ယ်အားလုံးလုံးဝအထီးကျန်ဖြစ်လိမ့်မည်။ စွမ်းဆောင်ရည်နိမ့်ပေမယ့်ဒေတာများ၏ရှေ့နောက်ညီညွတ်မှုနှင့်သမာဓိစောင့်သိ။
MySQLI တွင် MySQLI :: set_charset နည်းလမ်းမှတဆင့်ငွေပေးငွေယူ၏အထီးကျန်အဆင့်ကိုသတ်မှတ်နိုင်သည်။ များသောအားဖြင့်၎င်းကို မစတင်မှီ ခေါ်ဆိုခြင်းမပြုမီ Set Resistance Isolation Level State State ကို အသုံးပြု. သတ်မှတ်ရန်လိုအပ်သည်။
ငွေပေးငွေယူအထီးကျန်မှုအဆင့်ကိုသတ်မှတ်ပြီးညှိရန်အဆင့်များမှာဤတွင်ဖြစ်သည်။
ပထမ ဦး စွာ MySQL ဒေတာဘေ့စ်နှင့်ဆက်သွယ်မှုတစ်ခုဖန်တီးပါ။
<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-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>
စတင်ခြင်း မပြုမီ SQL ထုတ်ပြန်ချက်များသည်ငွေပေးငွေယူ၏အထီးကျန်အဆင့်ကိုသတ်မှတ်ရန်အသုံးပြုနိုင်သည်။ ဥပမာအားဖြင့်, ထပ်ခါတလဲလဲဖတ်ရှုခြင်း အထီးကျန်အဆင့်ကိုသတ်မှတ်ရန်
<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">"SET TRANSACTION ISOLATION LEVEL REPEATABLE READ"</span></span><span>);
</span></span>
လိုအပ်သည့်အတိုင်းသင့်လျော်သောအထီးကျန်အဆင့်ကိုရွေးချယ်နိုင်သည်။
အဆိုပါငွေပေးငွေယူ၏အထီးကျန်အဆင့်ကိုသတ်မှတ်ပြီးနောက် START_TRANSATESATE ကို အသုံးပြု. ငွေပေးငွေယူကိုစတင်ပါ။
<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><span><span class="hljs-keyword">try</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__">query</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2')"</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">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>
ငွေပေးငွေယူကွပ်မျက်မှုပေါ် မူတည်. ငွေပေးငွေယူကိုလွှဲပြောင်းရန်သို့မဟုတ်လှိမ့်ရန်သင်ရွေးချယ်နိုင်သည်။
ငွေပေးငွေယူကိုကျူးလွန်ရန် $ MySQLI-> ကျူးလွန် () ကို သုံးပါ။
ငွေပေးငွေယူကိုပြန်လှိမ့်ရန် $ MySQLI-> Rollback () ကို သုံးပါ။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ</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-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__">query</span></span><span>(</span><span><span class="hljs-string">"SET TRANSACTION ISOLATION LEVEL SERIALIZABLE"</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__">begin_transaction</span></span><span>();
</span><span><span class="hljs-keyword">try</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__">query</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO products (name, price) VALUES ('product1', 100)"</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 products SET price = 150 WHERE name = 'product2'"</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">// ဒေတာဘေ့စ် connection ကိုပိတ်ပါ</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 တ ် ထု ကိုတစ်ပြိုင်နက်တည်းစုံစမ်းမှုခွဲစိတ်ခြင်း
ဒေတာရှေ့နောက်ညီညွတ်မှုကိုသေချာစွာအာမခံထားရန်လိုအပ်သည် ။ အရောင်းအ 0 ယ်များလုံးဝအထီးကျန်နေစေရန်သေချာစေမည့် serializable ကို ရွေးချယ်ပါ, သို့သော်စွမ်းဆောင်ရည်သည်အလွန်ထိခိုက်လိမ့်မည်။
စွမ်းဆောင်ရည်မြင့်မားသောလိုအပ်ချက်များနှင့်အတူ application များ - စွမ်းဆောင်ရည်မြင့်မားသောလိုအပ်ချက်များနှင့် ပတ်သက်. သင် ဖတ်ရှုရန် ရွေးချယ်နိုင်သော်လည်းစာဖတ်ခြင်းပြ problem နာကိုသတိထားပါ။
PHP တွင် MySQLI extension ကိုအသုံးပြုသောအခါငွေပေးချေမှု၏အထီးကျန်မှုအဆင့်ကိုသတ်မှတ်ခြင်းသည်အလွန်အရေးကြီးသောစစ်ဆင်ရေးတစ်ခုဖြစ်သည်။ Set Defingsolation အထီးကျန်မှုအဆင့် ကြေငြာချက်ကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် mySqli :: အရောင်းအဝယ်ပြုခြင်း၏ယုံကြည်စိတ်ချရမှုနှင့်ကိုက်ညီမှုရှိစေရန်သီးခြားခွဲစိတ်မှုအဆင့်ကိုချိန်ညှိနိုင်သည်။ သင့်လျော်သောအထီးကျန်ခြင်းအဆင့်ကိုရွေးချယ်ခြင်းသည်ဒေတာဘေ့စ်၏စွမ်းဆောင်ရည်နှင့်ဒေတာရှေ့နောက်ညီညွတ်မှုအပေါ်အရေးကြီးသောသက်ရောက်မှုရှိသည်။
သက်ဆိုင်သောတက်(ဂ်)များ:
mysqli