MySQLI_STMT :: AttR_Get function ကို အသုံးပြု. MySQLI ကိုကြိုတင်မရွေး preprocessing ထုတ်ပြန်ချက်များကို debing လုပ်သည့်အခါ developer များမကြာခဏမရှင်းလင်းသောပြန်လည်ပြုပြင်ခြင်းတန်ဖိုးများနှင့်ကိုက်ညီမှုမရှိသောအပြုအမူများကဲ့သို့သောပြ problems နာများကိုမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ Debugging ထိရောက်မှုကိုတိုးတက်စေရန်နှင့်ပြ problems နာများကိုနေရာချထားရန်အတွက်ကျွန်ုပ်တို့သည်အသေးစိတ် debugging အချက်အလက်များကိုပုံနှိပ်ရန်နည်းလမ်းအချို့ကိုအသုံးပြုနိုင်သည်။ ဤဆောင်းပါးသည် MySQLI_STMT :: Attr . Att_get ၏ Debugging Teaching ကိုပိုမိုနားလည်ရန်ကူညီရန် PHP code များကိုပေါင်းစပ်ပါလိမ့်မည်။
MySQLI_STMT :: Attr_get သည် Attribute တန်ဖိုးကိုလက်မှတ်ရေးထိုးပြီးကိုင်တွယ်သည့် attribute value ကိုရရှိရန်အသုံးပြုသည်။ ပုံမှန်အားဖြင့်၎င်းသည် buffered မေးမြန်းချက်များအတွက်ချိန်ညှိချက်များကဲ့သို့သောပြည်တွင်းရေးဂုဏ်သတ္တိများကိုစစ်ဆေးရန်အသုံးပြုသည်။
$attr_value = $stmt->attr_get(MYSQLI_STMT_ATTR_CURSOR_TYPE);
ပြန်လာတန်ဖိုးမှာပိုင်ဆိုင်မှု၏လက်ရှိအခြေအနေကိုညွှန်ပြသည့်ကိန်းဂဏန်းတစ်ခုဖြစ်နိုင်သည်။ အကယ်. မှားယွင်းသော ပြန်လာလျှင်၎င်းသည်ဝယ်ယူမှုသည်မအောင်မြင်ပါ, နောက်ထပ်ရောဂါရှာဖွေရန်လိုအပ်သည်ဟုဆိုလိုသည်။
Debugging လုပ်ခြင်းမပြုမီ PHP အမှားအယွင်းပြုရေးယန္တရားကိုသင် ဦး စွာသေချာအောင်လုပ်သင့်သည်။
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
error_reporting(E_ALL);
ini_set('display_errors', 1);
ဤကုဒ်သည် MySQLI အမှားများအားလုံးကိုခြွင်းချက်များကိုချမှတ်ရန်နှင့်စာမျက်နှာပေါ်တွင်တိုက်ရိုက်ပြသရန်၎င်းတို့ကိုစာမျက်နှာပေါ်တွင်ပြသနိုင်ရန်အတွက်၎င်းတို့ကိုစာမျက်နှာပေါ်တွင်ပြသနိုင်အောင်ပြုလုပ်နိုင်သည်။
Return_get ၏ returnging တန်ဖိုးကို debugging လုပ်ခြင်းကိုလွယ်ကူချောမွေ့စေရန်အထောက်အကူပြုလုပ်ဆောင်မှုကို encapsulated လုပ်နိုင်သည်။
function debug_attr_get(mysqli_stmt $stmt, int $attr) {
try {
$value = $stmt->attr_get($attr);
if ($value === false) {
echo "attribute တွေမရနိုင်ဘူး(ID: $attr): ပြန်လာ false\n";
} else {
echo "ဉစ်စာပစ္စည်းများ(ID: $attr)အဘိုး: $value\n";
}
} catch (mysqli_sql_exception $e) {
echo "ခြွင်းချက်များ: " . $e->getMessage() . "\n";
}
}
မည်သို့အသုံးပြုရမည်နည်း
$mysqli = new mysqli("localhost", "user", "password", "database");
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
debug_attr_get($stmt, MYSQLI_STMT_ATTR_CURSOR_TYPE);
ထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင် debug သတင်းအချက်အလက်ကိုရှေ့ဆုံးသို့တိုက်ရိုက်ထုတ်ယူလိုမည်မဟုတ်ပါ။ အချက်အလက်များကိုမှတ်တမ်းတင်ခြင်းဖြင့်ထိန်းသိမ်းထားနိုင်သည်။
function log_debug_info($message) {
file_put_contents('/var/log/php_debug.log', date('Y-m-d H:i:s') . " - $message\n", FILE_APPEND);
}
ဤအရာကို debugging functions များဖြင့်ပေါင်းစပ်ပါ။
function debug_attr_get_to_log(mysqli_stmt $stmt, int $attr) {
try {
$value = $stmt->attr_get($attr);
$msg = ($value === false) ? "attr_get ပြန်လာ false" : "attr_get အဘိုး为: $value";
} catch (mysqli_sql_exception $e) {
$msg = "ထူးခြားသော: " . $e->getMessage();
}
log_debug_info("ဉစ်စာပစ္စည်းများ ID $attr - $msg");
}
တစ်ခါတစ်ရံတွင်အိမ်ခြံမြေဆက်တင်များသည်ဆက်သွယ်မှုသို့မဟုတ်ဖော်ပြချက်၏အခြား parameters များပေါ်တွင်မူတည်သည်။ ဥပမာအားဖြင့်:
$stmt->attr_set(MYSQLI_STMT_ATTR_CURSOR_TYPE, MYSQLI_CURSOR_SCROLLABLE);
attrack_get ကို ခေါ်ဆိုခြင်းဖြင့်သာ attribute value အတွက်ပြောင်းလဲမှုကိုလေ့လာနိုင်သည်။ ထို့ကြောင့်အမှန်တကယ်လျှောက်လွှာ၏ကွပ်မျက်မှုဆိုင်ရာယုတ္တိဗေဒကိုခွဲခြမ်းစိတ်ဖြာခြင်းထက် debugging စဉ်အတွင်း simulated သည်။
အကယ်. ပြင်ဆင်ထားပါက () ကို ပြန်ပို့ သည်ဟုဆိုလျှင် ဒေါ်လာ stmt variable သည်မမှန်ကန်သောအရာဝတ်ထုတစ်ခုဖြစ်သည် ။ ဤသို့ပြုလုပ်ရန်, သင်ဆက်သွယ်မှုနှင့်ကြေညာချက်ပြင်ဆင်မှုအတွက်စစ်ဆေးမှုများကိုသင်ထည့်နိုင်သည်။
if (!$stmt) {
die("ကြေညာချက်ကိုပြင်ဆင်ရန်ပျက်ကွက်: " . $mysqli->error);
}
အချို့သောအခြေအနေများတွင် API သို့မဟုတ်ဆာဗာယုတ္တိဗေဒကိုအဝေးမှ debug လုပ်ရန်လိုအပ်နိုင်သည်။ PHP scripts များကိုစမ်းသပ်ရန် Curl ကို သုံးနိုင်သည်။ ဥပမာအားဖြင့်:
$url = "https://m66.net/api/debug_stmt.php";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
log နှင့် တွဲဖက်. အမှန်တကယ်အကျိုးသက်ရောက်မှုကိုလေ့လာရန် M66.net ဒိုမိန်းအမည်အောက်ရှိ script ကို debugging code ကိုဖြန့်ဝေနိုင်ပါသည်။
အထက်ပါနည်းလမ်းများမှတဆင့် MySQLI_STMMT ၏အခြေအနေနှင့်အပြုအမူများကိုပိုမိုရှင်းလင်းစွာနားလည်နိုင်သည်။ ဒေတာဘေ့စ်လုပ်ငန်းများကို Debugging ပြုလုပ်ခြင်းသည် SQL ကိုအောင်မြင်စွာလုပ်ဆောင်ခြင်းရှိမရှိနှင့်မသက်ဆိုင်ပါ။ ဤဆောင်းပါးတွင်ကျွမ်းကျင်မှုများသည်ပြ problems နာများကိုလျင်မြန်စွာရှာဖွေရန်နှင့်ဖွံ့ဖြိုးတိုးတက်မှုထိရောက်မှုကိုတိုးတက်စေရန်ကူညီနိုင်သည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။