လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> BarySQLI_STMT :: $ error error error error error error us us ု error collection collection ဝါဒသွင်းခြင်း

BarySQLI_STMT :: $ error error error error error error us us ု error collection collection ဝါဒသွင်းခြင်း

gitbox 2025-05-29

ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PHP အတွက် PHP ကိုအသုံးပြုသောအခါ MySQLI သည် MySQLI_STMT :: error error error-error error error error error error error error or error error error error-or error error error-or error ကိုအသုံးပြုသည်။ ဤအမှားများကိုနားလည်သဘောပေါက်ခြင်းနှင့်ကိုင်တွယ်ခြင်းသည်ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းစဉ်၏အရေးပါသောအစိတ်အပိုင်းဖြစ်သည်။ ဤဆောင်းပါးသည် MySQLI_STMTMT :: $ error error error error error error rouds rouds error error error error error error error error error rouds rouds rouds arror error us rouds roures ည့်သည်ပြ problems နာများကိုဖြေရှင်းရန်နှင့်ဖြေရှင်းရန်အတွက်ပိုမိုနားလည်ရန်ကူညီရန်။

1 ။ အမှားနိဒါန်း: MySQLI_STMMT :: $ အမှားကဘာလဲ

MySQLI_STMM :: $ အမှားသည် MySQLI extension တွင်ကြိုတင်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်တွင်ထုတ်ပြန်ကြေငြာချက်တွင်အမှားအယွင်းတစ်ခုဖြစ်သည့်အမှားအယွင်းတစ်ခုဖြစ်သည်။ ကြေငြာချက်တစ်ခုအနေဖြင့်အမှားတစ်ခုဖြစ်ပါကအမှားအယွင်းရှိသည့်အသေးစိတ်အချက်အလက်များကိုရရန် $ stmt-> အမှားကို သုံးနိုင်သည်။

2 ။ ဘုံအမှားအယွင်းများနှင့်အကြောင်းပြချက်များ၏ခွဲခြမ်းစိတ်ဖြာ

အမှု 1: SQL syntax အမှား

အမှားမက်ဆေ့ခ်ျ :

 Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM users' at line 1

အကြောင်းပြချက် :
SQL စုံစမ်းမှုကြေညာချက်၏ syntax အမှားအယွင်းရှိသည့်အခါဤအမှားသည်များသောအားဖြင့်ဖြစ်ပေါ်လေ့ရှိသည်။ Error Message ၏အဆိုအရ SQL query တွင်လိုအပ်သော ရွေးချယ်ထားသော သော့ချက်စာလုံးများပျောက်ဆုံးနေကြောင်းကိုတွေ့မြင်နိုင်သည်။

ဖြေရှင်းချက် -
လယ်ကွင်းများနှင့်သော့ချက်စာလုံးများအားလုံးမှန်ကန်ကြောင်းသေချာစေရန် SQL ထုတ်ပြန်ချက်များရှိ SQL ထုတ်ပြန်ချက်များရှိ Syntax ကိုနှစ်ချက်နှိပ်ပါ။ ဥပမာများမှာအောက်ပါအတိုင်းဖြစ်သည် -

 $sql = "SELECT * FROM users"; // မှန်ကန်သောစုံစမ်းမှု syntax မှန်ကန်သော
$stmt = $mysqli->prepare($sql);
$stmt->execute();
if ($stmt->error) {
    echo "SQL အမှား: " . $stmt->error;
}

Case 2: ဒေတာဘေ့စ်ဆက်သွယ်မှုမအောင်မြင်ပါ

အမှားမက်ဆေ့ခ်ျ :

 Error: No database selected

အကြောင်းပြချက် :
ဒေတာဘေ့စ် connection ကိုစနစ်တကျမရွေးချယ်သည့်အခါဤအမှားသည်များသောအားဖြင့်ဖြစ်လေ့ရှိသည်။ သို့မဟုတ်ဒေတာဘေ့စ်ဆက်သွယ်မှုတွင်ပြ a နာတစ်ခုရှိသည်။

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

 $mysqli = new mysqli('localhost', 'user', 'password', 'mydatabase'); // ဒေတာဘေ့စ်အမည်မှန်ကန်ကြောင်းသေချာပါစေ
if ($mysqli->connect_error) {
    die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}

Case 3: ချည်နှောင်ထားသော parameters များကိုပျောက်ဆုံးနေသည်

အမှားမက်ဆေ့ခ်ျ :

 Error: Call to a member function bind_param() on a non-object

အကြောင်းပြချက် :
ပြင်ဆင်မှုကြေငြာချက်ကိုအကောင်အထည်ဖော်သည့်အခါဤအမှားသည်များသောအားဖြင့်ဖြစ်လေ့ရှိပြီး parameters တွေကိုစနစ်တကျချည်နှောင်ထားခြင်းမရှိပါ။ Bind_param သည် SQL ထုတ်ပြန်ချက်များတွင် placeholders များကို parameters များကို parameters များကိုချည်နှောင်ရန်အသုံးပြုသည်။ အဘယ်သူမျှမ parameters တွေကိုချည်နှောင်ထားလျှင်, ဤအမှားထမြောက်လိမ့်မည်။

ဖြေရှင်းချက် -
parameters တွေကိုမှန်ကန်စွာချည်နှောင်ထားကြောင်းနှင့် bind_param တွင် parameter type သည် database field type နှင့်ကိုက်ညီကြောင်းသေချာပါစေ။ ဥပမာအားဖြင့်:

 $sql = "SELECT * FROM users WHERE username = ? AND age = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("si", $username, $age); // parameter သည် binding
$stmt->execute();
if ($stmt->error) {
    echo "SQL အမှား: " . $stmt->error;
}

Case 4: Parameter type Mismatch

အမှားမက်ဆေ့ခ်ျ :

 Error: Argument 1 passed to mysqli_stmt::bind_param() must be of the type string, int given

အကြောင်းပြချက် :
bind_param ကို ခေါ်သည့်အခါ parameter အမျိုးအစားသည်ဝင်လာသောအချက်အလက်အမျိုးအစားနှင့်မကိုက်ညီပါ။ ဥပမာအားဖြင့်, အကယ်. သင်သည် Integer type parameter တစ်ခုတွင်အောင်မြင်ခဲ့ပေမဲ့စည်းနှောင်သည့်အမျိုးအစားကို string တစ်ခုအဖြစ်သတ်မှတ်ပါ။

ဖြေရှင်းချက် -
ကူးယူထားသော parameter type အမျိုးအစားသည် variable အမျိုးအစားများနှင့်ကိုက်ညီကြောင်းသေချာပါစေ။ Bind_param သည် အောက်ပါအမျိုးအစားများကိုထောက်ပံ့သည်။

  • S : String (string)

  • i : ကိန်း

  • D : နှစ်ထပ် pletoating နံပါတ် (နှစ်ဆ)

  • B : Boolean Value (Blob)

 $sql = "INSERT INTO users (username, age) VALUES (?, ?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("si", $username, $age); // မှန်ကန်သော binding မှန်ကန်သော
$stmt->execute();
if ($stmt->error) {
    echo "SQL အမှား: " . $stmt->error;
}

Case 5: Query ရလဒ်သည်အချည်းနှီးဖြစ်သည်

အမှားမက်ဆေ့ခ်ျ :

 Error: No data returned from query

အကြောင်းပြချက် :
ဤအမှားသည် mysqli_stmt ၏အမှားတစ်ခုမဟုတ်ပါသော်၎င်း, ဒေါ်လာအမှား တစ်ခုမဟုတ်ပါသော်၎င်း, ဤသည်ကိုစုံစမ်းမှုအခြေအနေများသို့မဟုတ်ဒေတာဆုံးရှုံးမှုအတွက်မတိုက်ဆိုင်မှုကြောင့်ဖြစ်နိုင်သည်။

ဖြေရှင်းချက် -
အချက်အလက်များတည်ရှိရန်သေချာစေရန်စုံစမ်းမှုအခြေအနေများကိုစစ်ဆေးပါ။ ဒေတာဘေ့စ်ရှိဒေတာများကိုမေးမြန်းခြင်းမပြုမီအမှန်တကယ်တည်ရှိနေကြောင်းကိုလည်းသင်စစ်ဆေးနိုင်သည်။

 $sql = "SELECT * FROM users WHERE username = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $username);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    // အချက်အလက်များကိုထုတ်ယူခြင်း
} else {
    echo "ရှာမတွေ့ပါ";
}

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

MySQLI_STMT :: SQL ထုတ်ပြန်ကြေငြာချက်အရအမှားသတင်းအချက်အလက်များကိုရယူရန် $ အမှားကို အသုံးပြုသည်။ PHP Code ကိုရေးသည့်အခါ SQL query statement သည်မှန်ကန်ကြောင်း Parameter type type လုပ်ခြင်းသည်ပုံမှန်အမှားများကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။ ထို့အပြင်စုံစမ်းမှုကွပ်မျက်မှုတစ်ခုစီအတွက် $ stmt-> အမှားတွင် အမှားတစ်ခုရှိမရှိစစ်ဆေးရန်သတိရပါ။

ဤအပင်များကိုနားလည်ခြင်းနှင့်အကြောင်းရင်းများကိုနားလည်ခြင်းအားဖြင့်သင်သည် MySQLI_STMT :: $ အမှား အမှားများကိုပိုမိုကောင်းမွန်စေရန်နှင့်ပြ resolves နာများကိုပိုမိုကောင်းမွန်အောင်ဖြေရှင်းနိုင်သည်။