လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI_STMT :: $ error error အမြဲတမ်းအဘယ်ကြောင့်အဘယ်ကြောင့်အသုံးမ 0 င်သနည်း။ ဖြစ်နိုင်သမျှအကြောင်းပြချက်ကဘာလဲ

MySQLI_STMT :: $ error error အမြဲတမ်းအဘယ်ကြောင့်အဘယ်ကြောင့်အသုံးမ 0 င်သနည်း။ ဖြစ်နိုင်သမျှအကြောင်းပြချက်ကဘာလဲ

gitbox 2025-05-28

ဒေတာဘေ့စ်ဖွံ့ဖြိုးတိုးတက်ရေးအတွက် PHP ကိုအသုံးပြုသောအခါ MySQLI extension သည် SQL ထုတ်ပြန်ချက်များကိုပြင်ဆင်ရန်နှင့် Execute လုပ်ရန် MySQLI_STMM ကို အသုံးပြုသည်။ သို့သော် MySQLI_STMT ကို SQL operations အတွက်အသုံးပြုသောအခါ developer များစွာသည်ဘုံပြ problem နာကိုကြုံတွေ့ရလိမ့်မည်။ MySQLI_STMT :: $ အမှား သည်အမြဲတမ်းဗလာဖြစ်သည်။

ဤဆောင်းပါးသည်ဤပြ problem နာ၏ဘ 0 အကြောင်းတရားများကိုခွဲခြမ်းစိတ်ဖြာပြီး developer များပိုမိုကောင်းမွန်သော debug ကိုကူညီရန်နှင့်ဤပြ problem နာကိုဖြေရှင်းရန်နှင့်သက်ဆိုင်သောဖြေရှင်းနည်းများကိုပေးလိမ့်မည်။

1 ။ MySQLI_STMT :: $ error error အဘယ်သူဖြစ်သနည်း။

PHP တွင် MySQLI_STMT :: $ error attribute attribute ကိုကြေငြာ ချက် နှင့်ဆက်စပ်သောနောက်ဆုံးအမှားမက်ဆေ့ခ်ျကိုရရှိရန်အသုံးပြုသည်။ များသောအားဖြင့် SQL ကြေငြာချက်တစ်ခုဖြစ်သည့်အခါအမှားတစ်ခုဖြစ်ပေါ်ပါက $ error attribute တွင်အမှားအယွင်းရှိပါလိမ့်မည်။

သို့သော်တစ်ခါတစ်ရံ SQL ကြေငြာချက်ကိုကွပ်မျက်ခံရလျှင်ပင် $ အမှား ပိုင်ဆိုင်မှုသည်အချည်းနှီးသောကြိုးကိုပြန်ပို့သည်။ ၎င်းသည်များသောအားဖြင့်အောက်ပါအကြောင်းပြချက်များထဲမှတစ်ခုကြောင့်ဖြစ်သည်။

က။ SQL syntax အမှားပေမယ့်မှန်ကန်စွာဖမ်းမိမဟုတ်ပါဘူး

အကယ်. SQL ကြေငြာချက်တွင် syntax အမှားတစ်ခုရှိပါကအမှားကိုမှန်ကန်စွာမရရှိပါက MySQLI_STMT :: အမှားအယွင်း မရှိပါ။ ဤအရာကိုစစ်ဆေးရန် MySQLI_ERGRORRORRORRERRER () ကိုသုံးနိုင်သည်။ ဆက်သွယ်မှုအဆင့်အမှားများကိုစစ်ဆေးရန်အသုံးပြုနိုင်သည်။

ခ။ MySQLI_STMMT :: bind_param ကို အသုံးပြုသောအခါအမှား

parameters တွေကိုချည်နှောင်သောအခါအမှားတစ်ခုဖြစ်ပါက အမှားတစ်ခုဖြစ်ပါ ကအမှားအယွင်းတစ်ခုသို့အမှားတစ်ခုသို့ပြန်ပို့နိုင်သည်။ ဘာဖြစ်လို့လဲဆိုတော့ bind_param () နည်းလမ်းဟာတစ် syntactically မှန်မှန်ကန်ကန်မှန်ကန်သည်, သို့သော် parameter type သို့မဟုတ်အရေအတွက်နှင့်မကိုက်ညီပါကအမှားအယွင်းတစ်ခုချပစ်မည်မဟုတ်ပါ။ သင်ပြန်လာတန်ဖိုးကိုစစ်ဆေးခြင်းအားဖြင့်ဤအရာကိုရှောင်ရှားနိုင်သည်။

ဂ။ MySQLI_STMMT ကိုအသုံးပြုသည့်အခါအမှား - ပြင်ဆင် ()

ပြင်ဆင်မှု () နည်းလမ်းကို SQL Query များကိုကြိုတင်ရှာဖွေရန်အသုံးပြုသည်။ များသော အား ဖြင့်ကြိုတင်ပြင်ဆင်မှုပျက်ကွက်ကြောင်းဖော်ပြရန် မှားယွင်းစွာ ပြန်လည်ရောက်ရှိလာသည်။ သို့သော်အချို့သောကိစ္စရပ်များတွင် (ဥပမာအားဖြင့်ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုမှန်ကန်စွာမဖွင့်နိုင်ပါ), ပြင်ဆင်မှု () နည်းလမ်းကိုပြန်လည်နေရာချထားခြင်း () နည်းလမ်းကိုစစ်ဆေးခြင်းအားဖြင့်ပြင်ဆင်မှုသည်အောင်မြင်မှုရှိမရှိကိုကျွန်ုပ်တို့အတည်ပြုနိုင်သည်။

2 ။ ဘုံအကြောင်းတရားများနှင့်ဖြေရှင်းနည်းများ

က။ ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုစစ်ဆေးပါ

ပထမ ဦး စွာဒေတာဘေ့စ်ဆက်သွယ်မှုမှန်ကန်မှုရှိ, မရှိကိုသင်အတည်ပြုရန်လိုအပ်သည်။ ဒေတာဘေ့စ 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 ကိုအသုံးပြုသည့်အခါအမှားစစ်ဆေးခြင်းသည်စစ်ဆေးခြင်း ()

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 () သည် အမှားတစ်ခုမပြုလုပ်နိုင်ပါ။

d ။ ပြီးပြည့်စုံသောအမှားမက်ဆေ့ခ်ျကိုပုံနှိပ်ပါ

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 ကိုအမှားစာရင်း
}

3 ။ အကျဉ်းချုပ်

စုစုပေါင်း MySQLI_STMT :: အမှားအယွင်းများသည် MySQLI_STMT ၏ မှားယွင်းမှုသည်များသောအားဖြင့် SQL ကြေငြာချက်ကိုယ်တိုင်နှင့်သက်ဆိုင်သည်။ ဤပြ problem နာကိုကြုံတွေ့ရသောအခါ,

  1. ဒေတာဘေ့စ်ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ။

  2. SQL ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်သည့်အခါ ကြိုတင်ပြင်ဆင်ထားသည့်တန်ဖိုးကိုစစ်ဆေးပါ () အသေးစိတ်အမှားများရရန် $ MySQLI-> အမှားကို သုံးပါ။

  3. Parameter ၏ parameterme အမျိုးအစား () သည် sql ထုတ်ပြန်ကြေငြာချက်တွင် placeholder နှင့်ကိုက်ညီကြောင်းသေချာအောင်လုပ်ပါ။

  4. အကယ်. အမှားမက်ဆေ့ခ်ျသည်ဗလာကျင့်နေပါက MySQLI_ERRORRORR () သို့မဟုတ် stmt-error_list မှတဆင့်အသေးစိတ်အချက်အလက်များကိုသင်ပိုမိုအသေးစိတ်အချက်အလက်များရနိုင်သည်။

ဤနည်းလမ်းများဖြင့် MySQLI_STMT ၏ပြ problem နာကိုသင် debug လုပ်ပြီးဖြေရှင်းနိုင်သင့်သည်။