PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင် SQL Queries များကိုအမှားပြုခြင်းသည်များသောအားဖြင့်ငြီးငွေ့ဖွယ်ကောင်းသောအလုပ်ဖြစ်သည်။ အထူးသဖြင့်စုံစမ်းမှုဖော်ပြချက်သည်ရှုပ်ထွေးပြီးအခြေအနေများနှင့်ဝါကျများပါ 0 င်သည်။ MySQLI_STMT :: $ အမှား ပိုင်ဆိုင်မှုသည် SQL Queries ရှိအမှားများကိုလျင်မြန်စွာရှာဖွေတွေ့ရှိရန်နှင့်ဖြေရှင်းရန်အတွက်အထူးသဖြင့် ဝါကျ အမှားများကိုလျင်မြန်စွာရှာဖွေတွေ့ရှိရန်အလွန်ထိရောက်သောကိရိယာတစ်ခုပေးသည်။
ပထမ ဦး စွာ MySQLI_STMM :: $ အမှားသည် MySQLI_STMT အတန်း၏ပိုင်ဆိုင်မှုဖြစ်သည်။ နောက်ဆုံး SQL ကြေငြာချက်ကိုကွပ်မျက်သည့်အခါဖြစ်ပေါ်လာသောအမှားအချက်အလက်များကိုသိမ်းဆည်းထားသည်။ ပုံမှန်အားဖြင့် MySQLI_STMT :: $ အမှားသည် အမှားတစ်ခုသို့ပြန်ပို့သည်။ SQL query execution နှင့်ပြ problem နာမရှိပါကအိမ်ခြံမြေသည်အချည်းနှီးသော string ကိုပြန်ပို့သည်။
၎င်းသည် MySQLI_STMT :: IFF $ error သည် အထူးသဖြင့်ဝါကျများ ကို ရှုပ်ထွေးသော debugging လုပ်သည့်အခါ SQL အမှားများကိုဖမ်းရန်အရေးကြီးသောကိရိယာတစ်ခုဖြစ်စေသည်။
အဘယ် အပိုဒ်တွင်သာမန်အမှားများတွင်ပါဝင်သည်:
မမှန်ကန်သောကော်လံသို့မဟုတ်စားပွဲတင်အမည်
မှားယွင်းသောနှိုင်းယှဉ်ပါ operator (ဥပမာ == အစား == ကို သုံး. )
မှားယွင်းသော syntax (e.g. ပျောက်ဆုံးနေသောကွင်းခတ်)
မသင့်လျော်သောဒေတာအမျိုးအစားနှိုင်းယှဉ်ခြင်း (ထိုကဲ့သို့သောကြိုးများနှင့်နှိုင်းယှဉ်ခြင်းကဲ့သို့သော)
ဤအမှားများကိုများသောအားဖြင့်အထူးသဖြင့် SQL query ထုတ်ပြန်ချက်များသည်ကြာရှည်စွာရွေ့လျားနေသည့်အချိန်တွင်အလွယ်တကူမတွေ့ရှိနိုင်ပါ။
Debug SQL Queries မှ SQL Queryies သို့ဆင်းသက်လာပြီး MySQLI_STMMT မှတစ်ဆင့် အပိုဒ် အမှားများကိုရှာဖွေသည်။
ပထမ ဦး စွာ MySQLI ဒေတာဘေ့စ် connection တစ်ခုကိုဖန်တီးပြီး SQL ကြေငြာချက်တစ်ခုကိုပြင်ဆင်ပါ။
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
// ကြိုတင်ပြင်ဆင်မှုများ
$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ? AND age > ?");
if ($stmt === false) {
die("ကြေညာချက်ကိုပြင်ဆင်ရန်ပျက်ကွက်: " . $mysqli->error);
}
?>
ထို့နောက်ကျွန်ုပ်တို့သည်စုံစမ်းမှုဆိုင်ရာသတ်မှတ်ချက်များကိုချည်နှောင်ပြီးကြေညာချက်ကိုအကောင်အထည်ဖော်သည်။ ဤတွင်ကျွန်ုပ်တို့သည်တရားမ 0 င်အသက်အရွယ်ကိုဖြတ်သန်းခြင်းကဲ့သို့သောအပိုဒ်အမှားကို မည်သည့် နေရာတွင်နေရာ၌ ရှိ သည့်နေရာတွင်တမင်တကာပြုလုပ်နိုင်သည်။
<?php
$username = "john_doe";
$age = "twenty"; // ဤတွင်ကျွန်ုပ်တို့သည်အသက်အရွယ်ကို string ကိုတမင်တကာသတ်မှတ်ထားသည်,နံပါတ်များမဟုတ်ပါ
$stmt->bind_param("si", $username, $age);
$stmt->execute();
?>
SQL query ကိုကွပ်မျက်ပြီးနောက် SQL ကြေငြာချက်ကို MySQLI_STMT :: $ အမှားကို အောင်မြင်စွာအကောင်အထည်ဖော်နိုင်ခြင်းရှိမရှိစစ်ဆေးနိုင်သည်။ အမှားတစ်ခုဖြစ်ပါက၎င်းသည်အသေးစိတ်အမှားအယွင်းကိုပြန်ပို့ပေးလိမ့်မည်။
<?php
if ($stmt->error) {
echo "SQL အမှား: " . $stmt->error;
} else {
echo "အောင်မြင်သောစုံစမ်းမှု";
}
?>
ဤအချက်မှာ $ stmt-> အမှားသည် အောက်ပါနှင့်ဆင်တူသောအမှားသတင်းစကားကိုထုတ်ပေးလိမ့်မည်။
SQL အမှား: Unknown column 'twenty' in 'where clause'
Error Message မှအမှားတစ်ခုအနေဖြင့် အသက်အရွယ် ရှိအမှားတစ်ခုဖြစ်ပွားသည့်အမှားတစ်ခုဖြစ်ပွားခဲ့ပြီးအ 0 င် string သည်တရားဝင်နံပါတ်မဟုတ်ပါ။
MySQLI_STMT :: $ အမှားအယွင်းများ အပြင်သင်အပိုဆောင်း debugging အဆင့်အချို့ကိုယူနိုင်သည်။
ပြည့်စုံသော SQL query ကိုပုံနှိပ်ခြင်း - တစ်ခါတစ်ရံ SQL Query များကိုကိုယ်တိုင်ကြည့်ရှုခြင်းသည်နောက်တဖန် debug လုပ်ရန်ထိရောက်သောနည်းလမ်းဖြစ်သည်။ MySQLI သည် ကွင်းဆင်းမေးမြန်းမှုထုတ်ပြန်ချက်များအရအပများကိုတိုက်ရိုက်ပံ့ပိုးပေးသော်လည်း,
MySQL အမှားမှတ်တမ်းကိုကြည့်ပါ ။ ဒေတာဘေ့စ်ဆာဗာကိုထောက်ခံပါက MySQL အမှားမှတ်တမ်းများကိုသင်ကြည့်နိုင်သည်။ များသောအားဖြင့် SQL အမှားများအကြောင်းအသေးစိတ်ပါ 0 င်သည်။
MySQLI_STMT :: $ error property, PHP developer များသည် SQL Queries ကိုကွပ်မျက်သည့်အခါ ဝါကျများ ကိုနေရာချသည့်နေရာများတွင်အမှားများကိုလျင်မြန်စွာဖမ်းယူနိုင်သည်။ ၎င်းသည်ရှုပ်ထွေးသောရှာဖွေမှုထုတ်ပြန်ချက်များအတွက်အထူးအရေးကြီးသည်။ ကျိုးကြောင်းဆီလျော်သောအမှားကိုင်တွယ်ခြင်းနှင့် debugging ကျွမ်းကျင်မှုများကိုပေါင်းစပ်ခြင်းနှင့် debugging ကျွမ်းကျင်မှုများကိုထိရောက်စွာတိုးတက်စေပြီးဘုံ SQL အမှားများကိုရှောင်ရှားနိုင်သည်။