လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQL Binary Fields မှအချက်အလက်ရယူပြီးနောက်ဒေတာများကိုလုပ်ဆောင်ရန် Bindec () ကိုအသုံးပြုနည်း

MySQL Binary Fields မှအချက်အလက်ရယူပြီးနောက်ဒေတာများကိုလုပ်ဆောင်ရန် Bindec () ကိုအသုံးပြုနည်း

M66 2025-06-06

PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင် MySQL database များမှ Binary Data ကိုဖတ်ရန်လိုအပ်သည့်အခြေအနေများမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ အထူးသဖြင့် binary fields ( binary , binary , binary ) ကဲ့သို့သော binary fields) ကိုဒေတာဗေ့စ်တွင်သိမ်းဆည်းထားသည့်အခါဤအချက်အလက်များကိုဒ decimal မကိန်းတန်ဖိုးများအဖြစ်မည်သို့မှန်ကန်စွာပြောင်းလဲနိုင်မည်နည်း။ PHP သည် binary strings များကိုဒ decimal မကိန်းထဲသို့ပြောင်းလဲရန် Bindec function ကိုထောက်ပံ့ပေးသည်။

MySQL မှယူထားသော Bindec field data များကိုပြုလုပ်ရန် Bindec function ကိုမည်သို့မှန်ကန်စွာအသုံးပြုရမည်ကိုဤဆောင်းပါးတွင်အသေးစိတ်ရှင်းပြပါမည်။

1 ။ MySQL ရှိ Binary Field သည်၎င်းကိုထုတ်ယူပြီးနောက်မည်သို့ဖြစ်သနည်း။

ဒေတာဘေ့စ်တွင်ထိုကဲ့သို့သောကွင်းဆက်အဓိပ္ပါယ်ဖွင့်ဆိုချက်ရှိသည်ဆိုပါစို့။

 CREATE TABLE example (
    id INT PRIMARY KEY,
    bin_data BINARY(4)
);

Binary Data ကိုသိမ်းထားပါ။

 INSERT INTO example (id, bin_data) VALUES (1, 0b1011);

PDO သို့မဟုတ် MySQLI မှတစ်ဆင့် quering လုပ်သည့်အခါ bin_data field ကို string တစ်ခုအဖြစ်ပြန်လည်ရောက်ရှိမည်ဖြစ်သော်လည်းယခုအချိန်တွင် string သည် "1011" သို့မဟုတ် "11" စာသားကိုစာသားမဟုတ်ဘဲ Binary Content ဖြစ်သည်။

ဥပမာအားဖြင့်, ထုတ်ယူပြီးနောက်၎င်းသည် "\ x0B \ x00 \ x00 \ x00 \ x00" နှင့် Bindec ကို တိုက်ရိုက်ခေါ်ဆိုခြင်း၏ရလဒ်မှာကုန်ကြမ်း byte ဖြစ်နိုင်သည်။

2 ။ Bindec လိုအပ်ချက်များသည် "0" နှင့် "1" ဖြင့်ဖွဲ့စည်းထားသော bindec လိုအပ်ချက်ဖြစ်သည်။

Bindec function ၏အငြင်းပွားမှုများသည် "1011" ကဲ့သို့သောကြိုးများဖြစ်သည်။ အကယ်. ၎င်းကို binary byte stream ကိုတိုက်ရိုက်ပေးလျှင်၎င်းသည် byte တန်ဖိုးကိုခွဲခြမ်းစိတ်ဖြာခြင်းမပြုဘဲ၎င်းကိုဇာတ်ကောင်ဖြင့်အနက်ဖွင့်ဆိုလိမ့်မည်မဟုတ်,

3 ။ မှန်ကန်စွာကိုင်တွယ်ဖြေရှင်းနည်း

ဖြေရှင်းချက် 1 - biny string ကို binable string ကိုပြောင်းပါ

PHP ၏ built-in function များကို အသုံးပြု. Byte မှ "0" နှင့် "1" strings များသို့ပြောင်းလဲရန်နှင့် "0 1" ကြိုးဖြင့်ပြောင်းလဲပစ်ပါ။ ထို့နောက်သူတို့ကို bindec နှင့်ခွဲခြမ်းစိတ်ဖြာပါ။

နမူနာကုဒ်:

 <?php
// ထံမှယူဆ MySQL အဆိုပါ binary လယ်ပြင်ဖယ်ရှားခဲ့သည်
$binaryData = "\x0B";  // ဒက်မချက်11,သက်ဆိုင်ရာ binary1011

// byte စီးကို binary string ကိုပြောင်းပါ
function binaryToBitString(string $binary): string {
    $bitString = '';
    for ($i = 0; $i < strlen($binary); $i++) {
        // ord() ဇာတ်ကောင်များရယူပါ ASCII လုံးပေါင်းပြဌါန်းသည့်ဉပဒေ,ကူးပြောင်း8bit binary string ကို
        $bitString .= str_pad(decbin(ord($binary[$i])), 8, '0', STR_PAD_LEFT);
    }
    return $bitString;
}

$bitString = binaryToBitString($binaryData);
echo "Bit string: " . $bitString . "\n";

// အသုံးပြု bindec 转换为ဒက်မချက်数
$decimalValue = bindec($bitString);
echo "Decimal value: " . $decimalValue . "\n";
?>

ရလဒ်ရလဒ် -

 Bit string: 00001011
Decimal value: 11

၎င်းသည် MySQL မှယူထားသော binary data များကို decimal နံပါတ်များသို့မှန်ကန်စွာပြောင်းလဲလိမ့်မည်။

Solution 2: MySQL functions များကို bit အမျိုးအစားများအတွက်တိုက်ရိုက်သုံးပါ

အကယ်. လယ်ကွက်သည်စာလုံးအနည်းငယ်သာရှိပါက၎င်းကိုမေးမြန်းသောအခါ MySQL function ကို သုံး. decimal နံပါတ်သို့ပြောင်းလဲနိုင်သည်။

 SELECT id, BIN(bin_data) AS bin_str FROM example;

သို့မဟုတ်ကိန်းတစ်ခုသို့တိုက်ရိုက်ပြောင်းပါ။

 SELECT id, CONV(HEX(bin_data), 16, 10) AS decimal_value FROM example;

ဤနည်းအားဖြင့် PHP တွင်သင်တိုက်ရိုက်ရရှိသောအရာမှာဒွိုင်းမာကျန်ပုံစံများဖြစ်သော Binary byte streams များကိုရှောင်ရှားခြင်းအားဖြင့်ဗလာသို့မဟုတ်ဒ dec မလည်းဖြစ်သည်။

4 ။ အကျဉ်းချုပ်

  • Bindec function ကို "0" နှင့် "1" တွင်ရေးထားသော binary strings များကိုသာကိုင်တွယ်နိုင်ပြီး binary byte streams များကိုမပံ့ပိုးနိုင်ပါ။

  • MySQL မှယူထားသော binary fields များသည်များသောအားဖြင့် byte streams များဖြစ်ပြီး Bindec အသုံးမပြုမီ binary strings များသို့ကူးပြောင်းရန်လိုအပ်သည်။

  • functions byte-byte ကူးပြောင်းခြင်းကိုသင်ကိုယ်တိုင်ဖြင့်ရေးနိုင်သည်။ သို့မဟုတ် SQL Query များအတွင်း function preprocessing ကိုသင်အသုံးပြုနိုင်သည်။

  • Binary Data ကိုအဓိပ္ပါယ်ကောက်ယူခြင်းကိုရှောင်ကြဉ်ရန်အမှန်တကယ်အခြေအနေအရသင့်တော်သောလုပ်ဆောင်မှုအစီအစဉ်ကိုရွေးချယ်ပါ။