ဒေတာဘေ့စ်ဖွံ့ဖြိုးတိုးတက်ရေးအတွက် PHP ကိုအသုံးပြုသောအခါ MySQLI extension သည် SQL ထုတ်ပြန်ချက်များကိုပြင်ဆင်ရန်နှင့် Execute လုပ်ရန် MySQLI_STMM ကို အသုံးပြုသည်။ သို့သော် MySQLI_STMT ကို SQL operations အတွက်အသုံးပြုသောအခါ developer များစွာသည်ဘုံပြ problem နာကိုကြုံတွေ့ရလိမ့်မည်။ MySQLI_STMT :: $ အမှား သည်အမြဲတမ်းဗလာဖြစ်သည်။
ဤဆောင်းပါးသည်ဤပြ problem နာ၏ဘ 0 အကြောင်းတရားများကိုခွဲခြမ်းစိတ်ဖြာပြီး developer များပိုမိုကောင်းမွန်သော debug ကိုကူညီရန်နှင့်ဤပြ problem နာကိုဖြေရှင်းရန်နှင့်သက်ဆိုင်သောဖြေရှင်းနည်းများကိုပေးလိမ့်မည်။
PHP တွင် MySQLI_STMT :: $ error attribute attribute ကိုကြေငြာ ချက် နှင့်ဆက်စပ်သောနောက်ဆုံးအမှားမက်ဆေ့ခ်ျကိုရရှိရန်အသုံးပြုသည်။ များသောအားဖြင့် SQL ကြေငြာချက်တစ်ခုဖြစ်သည့်အခါအမှားတစ်ခုဖြစ်ပေါ်ပါက $ error attribute တွင်အမှားအယွင်းရှိပါလိမ့်မည်။
သို့သော်တစ်ခါတစ်ရံ SQL ကြေငြာချက်ကိုကွပ်မျက်ခံရလျှင်ပင် $ အမှား ပိုင်ဆိုင်မှုသည်အချည်းနှီးသောကြိုးကိုပြန်ပို့သည်။ ၎င်းသည်များသောအားဖြင့်အောက်ပါအကြောင်းပြချက်များထဲမှတစ်ခုကြောင့်ဖြစ်သည်။
အကယ်. SQL ကြေငြာချက်တွင် syntax အမှားတစ်ခုရှိပါကအမှားကိုမှန်ကန်စွာမရရှိပါက MySQLI_STMT :: အမှားအယွင်း မရှိပါ။ ဤအရာကိုစစ်ဆေးရန် MySQLI_ERGRORRORRORRERRER () ကိုသုံးနိုင်သည်။ ဆက်သွယ်မှုအဆင့်အမှားများကိုစစ်ဆေးရန်အသုံးပြုနိုင်သည်။
parameters တွေကိုချည်နှောင်သောအခါအမှားတစ်ခုဖြစ်ပါက အမှားတစ်ခုဖြစ်ပါ ကအမှားအယွင်းတစ်ခုသို့အမှားတစ်ခုသို့ပြန်ပို့နိုင်သည်။ ဘာဖြစ်လို့လဲဆိုတော့ bind_param () နည်းလမ်းဟာတစ် syntactically မှန်မှန်ကန်ကန်မှန်ကန်သည်, သို့သော် parameter type သို့မဟုတ်အရေအတွက်နှင့်မကိုက်ညီပါကအမှားအယွင်းတစ်ခုချပစ်မည်မဟုတ်ပါ။ သင်ပြန်လာတန်ဖိုးကိုစစ်ဆေးခြင်းအားဖြင့်ဤအရာကိုရှောင်ရှားနိုင်သည်။
ပြင်ဆင်မှု () နည်းလမ်းကို SQL Query များကိုကြိုတင်ရှာဖွေရန်အသုံးပြုသည်။ များသော အား ဖြင့်ကြိုတင်ပြင်ဆင်မှုပျက်ကွက်ကြောင်းဖော်ပြရန် မှားယွင်းစွာ ပြန်လည်ရောက်ရှိလာသည်။ သို့သော်အချို့သောကိစ္စရပ်များတွင် (ဥပမာအားဖြင့်ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုမှန်ကန်စွာမဖွင့်နိုင်ပါ), ပြင်ဆင်မှု () နည်းလမ်းကိုပြန်လည်နေရာချထားခြင်း () နည်းလမ်းကိုစစ်ဆေးခြင်းအားဖြင့်ပြင်ဆင်မှုသည်အောင်မြင်မှုရှိမရှိကိုကျွန်ုပ်တို့အတည်ပြုနိုင်သည်။
ပထမ ဦး စွာဒေတာဘေ့စ်ဆက်သွယ်မှုမှန်ကန်မှုရှိ, မရှိကိုသင်အတည်ပြုရန်လိုအပ်သည်။ ဒေတာဘေ့စ connection error သည်ပျက်ကွက်မှုအားထုတ်ပြန်ကြေငြာချက်ကိုဖြစ်ပေါ်စေနိုင်သည် ။ မည်သည့်စုံစမ်းမှုမခံရမီသင်ဒေတာဘေ့စ်နှင့်သင်အောင်မြင်စွာချိတ်ဆက်ထားကြောင်းသေချာပါစေ။
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
အကယ်. ဒေတာဘေ့စ်ဆက်သွယ်မှုမအောင်မြင်ပါကသင်ဆက်သွယ်မှုအမှားအယွင်းရှိတိကျသောသတင်းအချက်အလက်များကိုကြည့်ရှုရန် $ MySQLI-> Connect_Error ကို သုံးနိုင်သည်။
Executing ပြင်ဆင်သည့်အခါ () အကယ် . Return Value သည် MySQLI_STMT :: $ အမှားအယွင်းများကို မှီခိုမည့်အစားအသေးစိတ်အမှားအချက်အလက်များကိုရယူရန်အတွက် $ MySQLI-> အမှားကို အသုံးပြုသည်ကိုသင်စစ်ဆေးနိုင်သည်။
$query = "SELECT * FROM users WHERE id = ?";
$stmt = $mysqli->prepare($query);
if ($stmt === false) {
echo "ကြေညာချက်ကိုပြင်ဆင်ရန်ပျက်ကွက်: " . $mysqli->error;
} else {
// ပုံမှန်နောက်ဆက်တွဲစစ်ဆင်ရေးလုပ်ဆောင်ပါ
}
bind_param ကိုအသုံးပြုသည့်အခါ ()) ကို အသုံးပြုသည့်အခါ ()) ကိုသေချာအောင်လုပ်ပါ။ ဥပမာအားဖြင့် SQL ကြေငြာချက်တစ်ခုတွင် string type-typeholder တွင်ပါ 0 င် ပါက,
$stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ?");
$email = "[email protected]";
$stmt->bind_param("s", $email);
အကယ်. အမျိုးအစားသည်မကိုက်ညီပါက bind_param () သည် အမှားတစ်ခုမပြုလုပ်နိုင်ပါ။
MySQLI_STMT :: $ အမှားသည် ဗလာကျင်းပါက MySQLI_Error () နှင့် mySqli_stmt :: MySQLI_STMMT :: MySQLI_STMMT :: error_list ကို သုံးနိုင်သည်။
if ($stmt->execute() === false) {
echo "Execution မအောင်မြင်ပါ: " . $stmt->error;
print_r($stmt->error_list); // output ကိုအမှားစာရင်း
}
စုစုပေါင်း MySQLI_STMT :: အမှားအယွင်းများသည် MySQLI_STMT ၏ မှားယွင်းမှုသည်များသောအားဖြင့် SQL ကြေငြာချက်ကိုယ်တိုင်နှင့်သက်ဆိုင်သည်။ ဤပြ problem နာကိုကြုံတွေ့ရသောအခါ,
ဒေတာဘေ့စ်ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ။
SQL ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်သည့်အခါ ကြိုတင်ပြင်ဆင်ထားသည့်တန်ဖိုးကိုစစ်ဆေးပါ () အသေးစိတ်အမှားများရရန် $ MySQLI-> အမှားကို သုံးပါ။
Parameter ၏ parameterme အမျိုးအစား () သည် sql ထုတ်ပြန်ကြေငြာချက်တွင် placeholder နှင့်ကိုက်ညီကြောင်းသေချာအောင်လုပ်ပါ။
အကယ်. အမှားမက်ဆေ့ခ်ျသည်ဗလာကျင့်နေပါက MySQLI_ERRORRORR () သို့မဟုတ် stmt-error_list မှတဆင့်အသေးစိတ်အချက်အလက်များကိုသင်ပိုမိုအသေးစိတ်အချက်အလက်များရနိုင်သည်။
ဤနည်းလမ်းများဖြင့် MySQLI_STMT ၏ပြ problem နာကိုသင် debug လုပ်ပြီးဖြေရှင်းနိုင်သင့်သည်။