ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် 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 နာများကိုဖြေရှင်းရန်နှင့်ဖြေရှင်းရန်အတွက်ပိုမိုနားလည်ရန်ကူညီရန်။
MySQLI_STMM :: $ အမှားသည် MySQLI extension တွင်ကြိုတင်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်တွင်ထုတ်ပြန်ကြေငြာချက်တွင်အမှားအယွင်းတစ်ခုဖြစ်သည့်အမှားအယွင်းတစ်ခုဖြစ်သည်။ ကြေငြာချက်တစ်ခုအနေဖြင့်အမှားတစ်ခုဖြစ်ပါကအမှားအယွင်းရှိသည့်အသေးစိတ်အချက်အလက်များကိုရရန် $ stmt-> အမှားကို သုံးနိုင်သည်။
အမှားမက်ဆေ့ခ်ျ :
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;
}
အမှားမက်ဆေ့ခ်ျ :
Error: No database selected
အကြောင်းပြချက် :
ဒေတာဘေ့စ် connection ကိုစနစ်တကျမရွေးချယ်သည့်အခါဤအမှားသည်များသောအားဖြင့်ဖြစ်လေ့ရှိသည်။ သို့မဟုတ်ဒေတာဘေ့စ်ဆက်သွယ်မှုတွင်ပြ a နာတစ်ခုရှိသည်။
ဖြေရှင်းချက် -
သင်သည်ဒေတာဘေ့စ်နှင့်အောင်မြင်စွာချိတ်ဆက်ထားပြီးစုံစမ်းမှုမလုပ်ဆောင်မီမှန်ကန်သောဒေတာဘေ့စ်ကိုရွေးချယ်ရန်သေချာပါစေ။ ဥပမာများမှာအောက်ပါအတိုင်းဖြစ်သည် -
$mysqli = new mysqli('localhost', 'user', 'password', 'mydatabase'); // ဒေတာဘေ့စ်အမည်မှန်ကန်ကြောင်းသေချာပါစေ
if ($mysqli->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
အမှားမက်ဆေ့ခ်ျ :
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;
}
အမှားမက်ဆေ့ခ်ျ :
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;
}
အမှားမက်ဆေ့ခ်ျ :
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 "ရှာမတွေ့ပါ";
}
MySQLI_STMT :: SQL ထုတ်ပြန်ကြေငြာချက်အရအမှားသတင်းအချက်အလက်များကိုရယူရန် $ အမှားကို အသုံးပြုသည်။ PHP Code ကိုရေးသည့်အခါ SQL query statement သည်မှန်ကန်ကြောင်း Parameter type type လုပ်ခြင်းသည်ပုံမှန်အမှားများကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။ ထို့အပြင်စုံစမ်းမှုကွပ်မျက်မှုတစ်ခုစီအတွက် $ stmt-> အမှားတွင် အမှားတစ်ခုရှိမရှိစစ်ဆေးရန်သတိရပါ။
ဤအပင်များကိုနားလည်ခြင်းနှင့်အကြောင်းရင်းများကိုနားလည်ခြင်းအားဖြင့်သင်သည် MySQLI_STMT :: $ အမှား အမှားများကိုပိုမိုကောင်းမွန်စေရန်နှင့်ပြ resolves နာများကိုပိုမိုကောင်းမွန်အောင်ဖြေရှင်းနိုင်သည်။