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

MySQLI_RESULURRESult :: $ အရှည် :: အရှည်ကန့်သတ်ချက်ထက်ကျော်လွန်သောလယ်ကွင်းများရှိပါကရှာဖွေမည်ကိုမည်သို့ရှာဖွေရမည်နည်း

gitbox 2025-06-06

ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PHP ၏ MySQLI extension ကိုအသုံးပြုသောအခါ MySQLI_RESULT :: ARDSTRESS TRAsST :: ဤပိုင်ဆိုင်မှုသည် (Blob, စာသားကဲ့သို့) binary သို့မဟုတ် variable lumme fields များနှင့်ဆက်ဆံရာတွင်အထူးသဖြင့်အသုံးဝင်သည်။ သို့သော်လယ်ကွင်းအရှည်သည်မျှော်လင့်ထားသည့်သို့မဟုတ်သတ်မှတ်ထားသောကန့်သတ်ချက်ထက်ကျော်လွန်မနေမအောင်မြင်ပါကသင်မည်သို့သိရှိသနည်း။ ဤဆောင်းပါးသည်ဤပန်းတိုင်သို့မည်သို့အောင်မြင်ရန်မည်သို့နားလည်ရန်တစ်ဆင့်ပြီးတစ်ဆင့်သင့်ကိုခြေလှမ်းတစ်လျှောက်ခြေလှမ်းလျှောက်ပါလိမ့်မည်။

mysqli_result :: $ အရှည်

mysqli_result :: $ အရှည်သည် MySQLI_RESULT OFF ၏ attribute တစ်ခုဖြစ်သည်။ Array တွင် element တစ်ခုစီသည် array တစ်ခုစီ၏ Byte အရှည်ကိုကိုယ်စားပြုသည်။ ဤတန်ဖိုးသည်ဒေတာဘေ့စ်လယ်၏သတ်မှတ်ထားသောအရှည်မဟုတ်ဘဲအချက်အလက်များ၏အမှန်တကယ်အရှည်ဖြစ်သည်။

အသုံးပြုမှုမြင်ကွင်း၏ဥပမာ

ကျွန်ုပ်တို့တွင်အောက်ပါ MySQL စားပွဲတင်ဖွဲ့စည်းပုံရှိသည်ဆိုပါစို့။

 CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(20),
    bio TEXT
);

ဒေတာဘေ့စ်မှရယူထားသော Username Field သည် Varchar (20) ၏ကန့်သတ်ချက်ထက်မကျော်လွန်နိုင်ကြောင်းသေချာစေလိုပါသည်။

နမူနာကုဒ် - လယ်ကွင်းအရှည်ကန့်သတ်ထက်ကျော်လွန်ရှိမရှိစစ်ဆေးပါ

ကျွန်ုပ်တို့သည်ကွင်းဆင်းလေ့မှုနှင့် $ ရလဒ်များကိုရှာဖွေရန် Field Definition နှင့် $ ရလဒ်များ >>> လမ်းမကြီးသည်ရှည်လျားလွန်းသည်ကိုနားလည်သဘောပေါက်ရန်အလွှာကိုပေါင်းစပ်နိုင်သည်။

 <?php
$mysqli = new mysqli("localhost", "user", "password", "database");
$query = "SELECT id, username, bio FROM users";
$result = $mysqli->query($query);

if ($result) {
    // Field Deference အချက်အလက်ကိုရယူပါ
    $fields = $result->fetch_fields();
    
    while ($row = $result->fetch_assoc()) {
        $lengths = $result->lengths;
        foreach ($fields as $index => $field) {
            $fieldName = $field->name;
            $maxLength = $field->length;

            // မှတ်သား:အတွက် VARCHAR နှင့် CHAR လယ်ကွင်း,$field->length ဒါဟာဇာတ်ကောင်အရှည်ပါပဲ * ဇာတ်ကောင်အစုံအတွက် bytes အများဆုံးအရေအတွက်
            // အမှန်တကယ်ပြောင်းလဲခြင်းကိုဇာတ်ကောင်အစုံနှင့်ပေါင်းစပ်ရန်လိုအပ်သည်,ဒီမှာယူဆတယ် UTF-8(အများဆုံး 3-4 ဒရယ်/လူသူမ)
            $expectedBytes = $maxLength * 4;

            if ($lengths[$index] > $expectedBytes) {
                echo "လယ်ကွင်း '{$fieldName}' အဆိုပါအကြောင်းအရာအရှည်မျှော်လင့်ထားသည့်ကန့်သတ်ကျော်လွန်:{$lengths[$index]} ဒရယ်\n";
            }
        }
    }
}
$mysqli->close();
?>

မှတ်သားရန်အရာ

  1. $ field-> အရှည်ကို များသောအားဖြင့်အများဆုံး bytes အများဆုံးအရေအတွက်နှင့်ဇာတ်ကောင်အရှည်နှင့်မတူနိုင်ပါ။ အထူးသဖြင့် Multi-byte ဇာတ်ကောင်အစုံ (UTF-8 ကဲ့သို့) ကိုအသုံးပြုသောအခါ bytes နှင့်အက္ခရာများအကြားဆက်နွယ်မှုကိုပြောင်းလဲရမည်။

  2. Blob (သို့) စာသားအမျိုးအစားကွက်လပ်များအတွက် MySQL ကိုယ်တိုင်ကပိုကြီးတဲ့အရှည်ကိုခွင့်ပြုထားသဖြင့်စီးပွားရေးယုတ္တိဗေဒအပေါ် အခြေခံ. ကန့်သတ်ချက်စံသတ်မှတ်ချက်များကိုစိတ်ကြိုက်ပြုလုပ်ရန်လိုအပ်သည်။

  3. အကယ်. လယ်ကွက်သည်လွတ်မြောက်လာပြီး encapled ခဲ့လျှင်, ထို့ကြောင့် $ ရလဒ် -> အရှည်များကို ခန့်မှန်းခြေအားဖြင့်သာအသုံးပြုနိုင်သည်။ အမှန်တကယ်အသုံးပြုသောအခါစီးပွားရေးစည်းမျဉ်းစည်းကမ်းများနှင့်အတူတရားစီရင်ခြင်းကိုပေါင်းစပ်ရန်အကြံပြုထားပါသည်။

အဆင့်မြင့်အသုံးပြုမှု: log ခြွင်းချက်နယ်ပယ်များ log

အကန့်အသတ်မဲ့သောနယ်ပယ်များသည်ဒေတာအရင်းအမြစ်ပြ problems နာများသို့မဟုတ်စီးပွားရေးဆိုင်ရာယုတ္တိဗေဒအမှားများအတွက်မှတ်တမ်းသို့ဝင်ရောက်နိုင်သည်။

 if ($lengths[$index] > $expectedBytes) {
    file_put_contents("/var/log/field_overflow.log", date('c') . " - လယ်ကွင်း '{$fieldName}' ကန့်သတ်ကျော်လွန်。အရှည်: {$lengths[$index]}\n", FILE_APPEND);
}

သင်သည် https://gitbox.net/api/api/api/api/api/api/api/api/notify?tength နှင့်ဆင်တူသော interface ကိုခေါ်ဆိုနိုင်သည်။ သတိပေးချက်များကိုသတိပြုပါ။

ကောက်ချက်

MySQLI_RESULT :: $ အရှည် နှင့် fetch_fields () ပေါင်းစပ်ခြင်းအားဖြင့်ဒေတာဘေ့စ်ရှိလယ်ကွင်းအရှည်သည်မျှော်လင့်ချက်များနှင့်ကိုက်ညီမှုရှိမရှိကိုထိရောက်စွာစောင့်ကြည့်နိုင်သည်။ ဘာသာစကားမျိုးစုံနှင့်မျိုးစုံအစုံစနစ်များတွင်ဤရှာဖွေတွေ့ရှိမှုသည်အထူးအရေးကြီးသည်နှင့် developer များကြိုတင်အချက်အလက်ပြ problems နာများကိုကြိုတင်ရှာဖွေတွေ့ရှိရန်ကူညီနိုင်သည်။ စနစ်၏ကြံ့ခိုင်မှုကိုတိုးတက်စေရန်အချက်အလက်တင်သွင်းမှုနှင့်သုံးစွဲသူထည့်သွင်းမှုကဲ့သို့သောမြင့်မားသောအန္တရာယ်ဖြစ်စဉ်များတွင်ထိုကဲ့သို့သောယုတ္တိဗေဒလုပ်ငန်းစဉ်များတွင်ပေါင်းစပ်ရန်အကြံပြုသည်။