MySQLI_STMT :: $ အမှား သည် MySQLI extension တွင် attribute တစ်ခုဖြစ်ပြီးကြိုတင်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များ ( ပြင်ဆင်ထားသည့်ဖော်ပြချက် ) နှင့်ပတ်သက်သောအမှားအချက်အလက်များရရှိရန်အသုံးပြုသော attribute တစ်ခုဖြစ်သည်။ သီအိုရီအရ MySQLI_STMTT ၏ကွပ်မျက်မှု -: Execute () မအောင်မြင်ပါက MySQLI_STMT :: $ အမှား မှတစ်ဆင့်အသေးစိတ်အချက်အလက်များကိုသင်ရရှိသင့်သည်။ သို့သော်အချို့သောကိစ္စရပ်များတွင် ဒေါ်လာအမှားသည် အချည်းနှီးဖြစ်နိုင်ပြီးအမှားအယွင်းတစ်ခုမပြန်နိုင်ပါ။ ဤအချိန်၌ဤပြ problem နာကိုမည်သို့ထိထိရောက်ရောက်ဖြေရှင်းနည်းကိုဖြေရှင်းနည်းကိုဖြေရှင်းနည်း?
ပထမ ဦး စွာဒေတာဘေ့စ်ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ။ အကယ်. ဒေတာဘေ့စ်ဆက်သွယ်မှုမအောင်မြင်ပါကမည်သည့် SQL ထုတ်ပြန်ချက်များကိုမဆိုလုပ်ဆောင်သောအခါ MySQLI_STMT :: MySQLI_STMM :: MySQLI_STMT :: အမှား တစ်ခုသည်တိကျသောအမှားတစ်ခုသို့မပို့နိုင်ပါ။ သင်၏ဒေတာဘေ့စ်ဆက်သွယ်မှုသည်မှန်ကန်ကြောင်းသေချာပါစေ။
<?php
$mysqli = new mysqli("localhost", "username", "password", "database_name");
if ($mysqli->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
?>
ဒေတာဘေ့စ်ဆက်သွယ်မှုသည်ပြ problem နာမဟုတ်ကြောင်းသေချာစေရန် Preprocessing ကြေငြာချက်တွင်အမှားအယွင်းများကိုဆက်လက်စစ်ဆေးပါ။
MySQLI_STMT ::: $ အမှားသည် အချည်းနှီးဖြစ်လိမ့်မည်ဖြစ်သောကြောင့် MySQLI ကအမှားမရှိပါ။ နောက်ထပ်ပြ troubl နာဖြေရှင်းမှုအတွက် MySQLI_ERROR နှင့် MYSQLI_STMT ကိုသုံးနိုင်သည်။ $ errno ကို သုံးနိုင်သည်။ MySQLI_ERROR ဆိုသည်မှာလက်ရှိဆက်သွယ်မှုအမှားကိုရရန်အထွေထွေနည်းလမ်းဖြစ်သည်။ MySQLI_STMT :: $ errno သည် အမှားကုဒ်တစ်ခုပြန်ပို့သည်။
<?php
// ကြိုတင်ကြေငြာချက်တစ်ခုဖန်တီးပါ
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if (!$stmt) {
echo "SQL အမှား: " . $mysqli->error;
} else {
$stmt->bind_param("i", $userId);
if (!$stmt->execute()) {
echo "执行အမှား: " . $stmt->error . " အမှား码: " . $stmt->errno;
}
}
?>
ဤဥပမာတွင် Execute ပျက်ကွက်လျှင် $ stmt-> အမှား တွင် အမှားအယွင်းများပါ 0 င်လိမ့်မည်။
MySQLI_STMM :: $ အမှား အမှားတစ်ခုပြန်ပို့ခြင်းမပြုနိုင်ပါ။ နောက်ထပ်ဖြစ်နိုင်ချေရှိသောအကြောင်းပြချက်မှာ SQL syntax ကိုယ်နှိုက်နှင့်ပြ problem နာမရှိပါ။ သို့မဟုတ် SQL query သည်အချို့သောကိစ္စရပ်များတွင်အမှားတစ်ခုမဟုတ်ပါ။ ပိုမိုကောင်းမွန်သောပြ troubl နာဖြေရှင်းခြင်းအတွက်မျှော်လင့်ချက်များနှင့်ကိုက်ညီမှုရှိမရှိစစ်ဆေးရန် SQL ကြေငြာချက်ကိုပုံနှိပ်ပါ။
<?php
$sql = "SELECT * FROM users WHERE id = ?";
echo "ကွပ်မျက်ခံရ SQL အသေအချာပေြာဆိုချက်: " . $sql;
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("i", $userId);
if ($stmt->execute()) {
echo "အောင်မြင်သောစုံစမ်းမှု";
} else {
echo "Execution မအောင်မြင်ပါ: " . $stmt->error;
}
?>
အကယ်. သင်သည် output sql query ကိုတွေ့နိုင်ပါကကြေညာချက်သည်အပြည့်အဝသို့မဟုတ်မှန်ကန်သော parametersks နှင့်ပြည့်စုံသို့မဟုတ် spliced ရှိမရှိစစ်ဆေးပါ။
$ MySQLI_STMT :: $ mySQLI_STMT :: $ အမှားသည် မှန်ကန်သောသတင်းအချက်အလက်များကိုပြန်လည်မပြန်သေးပါက, အထူးသဖြင့်ထုတ်လုပ်မှုပတ်ဝန်းကျင်တွင် MySQL အမှားမှတ်တမ်းကိုကြည့်ရန်အကြံပြုသည်။ MySQL အမှားမှတ်တမ်းကိုကြည့်ခြင်းအားဖြင့်အသေးစိတ်အမှားအချက်အလက်များကိုသင်ကြည့်ရှုနိုင်သည်။ ယေဘုယျအားဖြင့်အမှားမှတ်တမ်းများကို MySQL configuration file တွင်သတ်မှတ်ထားသော log_error လမ်းကြောင်းအောက်တွင်တွေ့နိုင်သည် ။
Var_Dump နှင့် Print_r ကို debugging tools များသို့မဟုတ်ဖွံ့ဖြိုးရေးပတ် 0 န်းကျင်များတွင် debugging tools များရှိသည့်အတွက်လည်းအမှား၏အကြောင်းရင်းကိုပိုမိုနားလည်ရန်လည်းကူညီနိုင်သည်။ ဥပမာအားဖြင့်, သင်သည်အသေးစိတ်အရာဝတ်ထုတစ်ခုလုံးကိုပုံနှိပ်ထုတ်ဝေနိုင်သည်သို့မဟုတ်အသေးစိတ် debug သတင်းအချက်အလက်ကိုကြည့်ရှုရန် MySQLI_STMMT :: Debug () Debug () Debug () Debug () Debug ( Debug) ကိုသုံးနိုင်သည်။
<?php
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->debug(); // သတင်းအချက်အလက် debugging
?>
အကယ်. သင်၏ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုဝေးလံခေါင်ဖျားသောဆာဗာမှတစ်ဆင့်ပြုလုပ်ပါက၎င်းသည်ကွန်ယက် latency သို့မဟုတ် connection issues နာများကြောင့်ထိခိုက်နိုင်သည်။ ဤကိစ္စတွင်ဒေတာဘေ့စ်ဆာဗာနှင့်ကွန်ယက်သည်တည်ငြိမ်မှုရှိ, Ping သို့မဟုတ်အခြား network diagnostic tools များမှတဆင့်ဆက်သွယ်မှုကိုလည်းစစ်ဆေးနိုင်သည်။
အကယ်. သင်သည်အမှားမက်ဆေ့ခ်ျကိုမရရှိနိုင်ပါက MySQLI_QUERE () ကိုကြိုတင်ပြင်ဆင်ထားသည့်ဖော်ပြချက်အစား ( MySQLI_STMT ) အစား MySQLI_QUERY () ကိုသုံးနိုင်သည်။ MySQLI_QUERY () အမှားမက်ဆေ့ခ်ျကိုတိုက်ရိုက်ပြန်ပို့လိမ့်မည်။
<?php
$query = "SELECT * FROM users WHERE id = $userId";
if (!$result = $mysqli->query($query)) {
echo "စုံစမ်းမှုမအောင်မြင်ပါ: " . $mysqli->error;
}
?>
ဤနည်းအားဖြင့်ပြ the နာသည်ကြိုတင်သတ်မှတ်ထားသည့်ကြေညာချက်သို့မဟုတ်အခြားနေရာများတွင်ကွပ်မျက်ခြင်းရှိမရှိထပ်မံအတည်ပြုနိုင်သည်။
အကယ်. ပြ the နာကိုဖြေရှင်းနိုင်ရန်မဖြေရှင်းနိုင်ပါကသင်ကုဒ်ကိုရိုးရှင်းအောင်ပြုလုပ်နိုင်ပြီးပြ the နာကိုတဖြည်းဖြည်းပြ problem နာကိုပြ troubl နာကိုရှာဖွေရန်ကြိုးစားနိုင်သည်။ ရိုးရှင်းသောစုံစမ်းမှုတစ်ခုကို ဦး စွာပြုလုပ်နိုင်သည်ကိုစစ်ဆေးပါ။ ထို့နောက်တဖြည်းဖြည်းချင်းအမှားများဖြစ်ပေါ်လာသည့်အခါကြည့်ရှုရန်ရှုပ်ထွေးမှုကိုတိုးပွားစေသည်။
MySQLI_STMT :: $ အမှား ပြန်ရောက်ပါက Database connection သည်ပုံမှန်ဖြစ်သည်, MySQLI_ERRORS နှင့် MySQLI_STMT ကို အသုံးပြု. SQL syntax ကိုစစ်ဆေးရန်, MySQL အမှားမှတ်တမ်းများနှင့်အခြားနည်းလမ်းများကိုကြည့်ရှုခြင်း, လိုအပ်ပါကကိရိယာများသို့မဟုတ်ရိုးရှင်းသောစုံစမ်းမှုစစ်ဆေးခြင်းမှတစ်ဆင့်ပြ the နာ၏အတိုင်းအတာကိုပိုမိုကျဉ်းမြောင်းနိုင်သည်။
ဒီနည်းလမ်းတွေကသင့်ရဲ့ပြ problem နာကိုဖြေရှင်းနိုင်ပြီးသင့်ရဲ့စီမံကိန်းကိုချောမွေ့စေချင်ပါတယ်။