PHP တွင် MySQLI_STMT :: ပြင်ဆင်ခြင်း သည်ကြိုတင်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များအတွက်အဓိကနည်းလမ်းဖြစ်သည်။ ၎င်းသည် SQL ဆေးထိုးခြင်းနှင့်ကွပ်မျက်ခြင်းထိရောက်မှုကိုထိရောက်စွာတားဆီးနိုင်သည်။ သို့သော်ငွေသွင်းငွေထုတ်ရေးလုပ်ငန်းစဉ်များတွင် MySQLI_STMT ကိုအသုံးပြုသောအခါ, ကြိုတင်ပြင်ဆင်မှု အချို့ကိုသင်မကြာခဏကြုံတွေ့ရလေ့ရှိပြီးအရောင်းအ 0 ယ်အချို့ကိုသင်မကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ ဤဆောင်းပါးသည်ဤဘုံအန္တရာယ်များကိုအသေးစိတ်လေ့လာပြီးသက်ဆိုင်ရာဖြေရှင်းနည်းများကိုပေးလိမ့်မည်။
ငွေပေးငွေယူသည်ဤလုပ်ငန်းများအောင်မြင်ရန်လိုအပ်သည့်ဒေတာဘေ့စ်စီမံခန့်ခွဲမှုတွင်စစ်ဆင်ရေးအစုတစ်ခုဖြစ်သည်။ MySQLI ၏ငွေပေးငွေယူထိန်းချုပ်မှုကို အသုံးပြု. အောက်ပါနည်းလမ်းကိုများသောအားဖြင့်ဟုခေါ်သည်။
$mysqli->begin_transaction();
$mysqli->commit();
$mysqli->rollback();
MySQLI_STMT :: Binds SQL ထုတ်ပြန်ချက်များနှင့်ရှေ့ပြေးများကိုပြင်ဆင်ပါ ။ ၎င်းသည် SQL ကြေငြာချက်သည်တရားဝင်ဖြစ်ကြောင်းသေချာစေရန်မှန်ကန်စွာအသုံးပြုသည်။
Pit Point : $ stmt = $ MySQLI-> ပြင်ဆင်ခြင်း ($ SQL); $ stmt သည် မှားယွင်းသော ရှိမရှိစစ်ဆေးသည်မဟုတ်။ ပြင်ဆင်မှုမအောင်မြင်ပါက SQL syntax အမှားအယွင်းများသို့မဟုတ်အခြားအကြောင်းပြချက်များဆိုပါကငွေပေးငွေယူသည်ဆက်လက်လုပ်ဆောင်နိုင်ပြီးနောက်ဆက်တွဲစစ်ဆင်ရေးသည်အမှားတစ်ခုဖြစ်လာပြီးငွေပေးချေမှုမှာအမှားတစ်ခုဖြစ်လာနိုင်သည်။
ဖြေရှင်းရန် :
$stmt = $mysqli->prepare($sql);
if ($stmt === false) {
$mysqli->rollback();
throw new Exception('Prepare failed: ' . $mysqli->error);
}
အရောင်းအ 0 ယ်တစ်ခုတွင်, ပြင်ဆင်ရန်ပြင်ဆင်ခြင်း,
အချက်များ - တစ်ခါတစ်ရံတွင် developer သည် ဒေါ်လာ stmt = $ MySQLI-> ပြင်ဆင်ရန် ($ SQL); $ MySQLI-> စတင်ရန် () စတင်ရန် မခေါ်မီ။ သို့သော်အချို့သော MySQL ဗားရှင်း (သို့) configurations များအရကြိုတင်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များကိုအလိုအလျောက်သွယ်ဝိုက်စွာကျူးလွန်မိသည်။
ဖြေရှင်းရန် :
အရောင်းအ 0 ယ်ကို ဦး စွာစတင်ရန်သေချာအောင်လုပ်ပါ။
$mysqli->begin_transaction();
$stmt = $mysqli->prepare($sql);
// နောက်ဆက်တွဲ binding နှင့်ကွပ်မျက်
ရမှတ်များ - ကြိုတင်မဆိုထုတ်ပြန်ချက်များသည် SQL ထုတ်ပြန်ချက်များကိုတစ်ပြိုင်တည်းရေးသားခြင်းကိုမထောက်ခံပါ။ အကယ်. ဒေါ်လာ SQL တွင် Semicolons မှခွဲထွက်မှုများစွာပါ 0 င်ပါကပြင်ဆင်မှုသည်ကျရှုံးလိမ့်မည်။
ဖြေရှင်းရန် :
တစ်ခုတည်းသော SQL ကြေငြာချက်တစ်ခုတည်းကိုသာပြင်ဆင်ထားပြီးလိုအပ်ပါကထုတ်ပြန်ချက်များစွာကိုခွဲခြားသတ်မှတ်ရန်သေချာစေပါ။
PIT POINT : Parameter သည်မတိုက်ဆိုင်သည့်ပုံစံများသို့မဟုတ်ခြုံငုံမ 0 င်သော place နာများသို့မဟုတ်နေရာချထားသူအားလုံးကဲ့သို့သောအရာကွပ်မျက်ခြင်းအမှားများကိုဖြစ်ပေါ်စေပြီးငွေပေးငွေယူသည်နောက်ဆုံးတွင်ပျက်ကွက်လိမ့်မည်။
ဖြေရှင်းရန် :
ဤကဲ့သို့သောခညျြနှောငျ parameteters အမျိုးအစားနှင့်အရေအတွက်ကမှန်ကန်ကြောင်းသေချာစေရန်သေချာပါစေ:
$stmt->bind_param('si', $name, $id);
နှင့် bind_param ၏ပြန်လာတန်ဖိုးကိုစစ်ဆေးပါ။
Pit Point : အကယ်. ဒေါ်လာ stmt-> အနီးကပ် () ကို အရောင်းအ 0 ယ်မတိုင်မီမခေါ်ပါ။
ဖြေရှင်းရန် :
ငွေပေးငွေယူသည်အဆုံးမတိုင်မီ ဒေါ်လာ stmt-> အနီးကပ် () ကိုဖုန်းဆက်ပါ။
Pit Point : uncraught just or error rol or, ငွေပေးငွေယူကိုစနစ်တကျကျူးလွန်ခြင်းသို့မဟုတ်နောက်ကျောကိုပြန်လှိမ့်ခြင်းခံရခြင်းမပြုရ။
ဖြေရှင်းရန် :
Try-catch ဖွဲ့စည်းပုံကိုအသုံးပြုခြင်း,
try {
$mysqli->begin_transaction();
$stmt = $mysqli->prepare($sql);
if ($stmt === false) {
throw new Exception($mysqli->error);
}
$stmt->bind_param('si', $name, $id);
$stmt->execute();
$mysqli->commit();
} catch (Exception $e) {
$mysqli->rollback();
echo "Transaction failed: " . $e->getMessage();
}
<?php
$mysqli = new mysqli('gitbox.net', 'user', 'password', 'database');
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}
try {
$mysqli->begin_transaction();
$sql = "UPDATE users SET name = ? WHERE id = ?";
$stmt = $mysqli->prepare($sql);
if ($stmt === false) {
throw new Exception('Prepare failed: ' . $mysqli->error);
}
$name = 'Alice';
$id = 123;
if (!$stmt->bind_param('si', $name, $id)) {
throw new Exception('Bind param failed: ' . $stmt->error);
}
if (!$stmt->execute()) {
throw new Exception('Execute failed: ' . $stmt->error);
}
$stmt->close();
$mysqli->commit();
echo "Transaction succeeded.";
} catch (Exception $e) {
$mysqli->rollback();
echo "Transaction failed: " . $e->getMessage();
}
$mysqli->close();
?>
ငွေပေးငွေယူစတင်ပြီးနောက် ကြိုတင်ပြင်ဆင်ထားရန် အမြဲတမ်း execute ။
ပြင်ဆင်ခြင်း , bind_param ၏ပြန်လာတန်ဖိုးများကိုစစ်ဆေးပြီး execute လုပ်ပါ ။
တစ်ခုချင်းစီကိုတစ် ဦး တည်းသာထုတ်ပြန်ချက်များသာဖြစ်စဉ်များကိုသာ ပြင်ဆင်ထားသည် ။
ခြွင်းချက်ဖြစ်ပေါ်သည့်အခါငွေပေးငွေယူကိုပြန်လှိမ့်လှန်ဖို့သေချာပါစေ။
preprocessing ကြေညာချက်အရင်းအမြစ်ကိုပိတ်ပါ။
အထက်ဖော်ပြပါအသေးစိတ်ဖော်ပြချက်များကိုအောက်ပါအသေးစိတ်အချက်အလက်များ သည် MySQLI_STMT :: ငွေပေးချေမှုအတွက်တွေ့ကြုံမှုများကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။