လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI_STMT :: Send_long_data function ကဘာလဲ။ ၎င်း၏အခြေခံအသုံးပြုမှုနှင့်ကြိုတင်ကာကွယ်မှုများကဘာလဲ။

MySQLI_STMT :: Send_long_data function ကဘာလဲ။ ၎င်း၏အခြေခံအသုံးပြုမှုနှင့်ကြိုတင်ကာကွယ်မှုများကဘာလဲ။

gitbox 2025-08-28

MySQLI_STMT :: Send_long_data function ကဘာလဲ။ ၎င်း၏အခြေခံအသုံးပြုမှုနှင့်ကြိုတင်ကာကွယ်မှုများကဘာလဲ။

PHP ၏ MySQLI extension ကို MySQLI_STMT :: Send_long_data တွင် MySQL_Long_DATA သည် MySQL database သို့ (ထိုကဲ့သို့သောကြီးမားသောစာသား, ကြီးမားသော binary data စသဖြင့်) ပို့ရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ အကြီးစားဒေတာသွင်းခြင်းကိုကိုင်တွယ်သောအခါသမားရိုးကျ Bind_param () နည်းလမ်းကိုဒေတာအရွယ်အစားဖြင့်ကန့်သတ်ထားနိုင်ပြီး Send_long_Data () သည်အထူးအရေးကြီးသည်။ ဤဆောင်းပါးသည် MySQLI_STMT :: Send_long_data နှင့်ကြိုတင်ကာကွယ်မှုများပြုလုပ်သောအခြေခံအသုံးပြုမှုကိုမိတ်ဆက်ပေးလိမ့်မည်။

1 ။ function ရှေ့ပြေးပုံစံ

 <span><span>mysqli_stmt::</span><span><span class="hljs-title function_ invoke__">send_long_data</span></span><span>(</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$param_nr</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$data</span></span><span>): </span><span><span class="hljs-keyword">bool</span></span><span>
</span></span>
  • $ Param_nr : ပို့ရန်အချက်အလက်များ၏ parameter အရေအတွက်။ ဒါဟာရဲ့အနေအထားနှင့်ကိုက်ညီ ? SQL ကြေငြာချက်တွင် placeholder 0 င်မှစတင်ခြင်းကိုရေတွက်ခြင်း။

  • $ ဒေတာ - ပို့ရန်ကြီးမားသောအချက်အလက်များကိုကိုယ်စားပြုသည်, များသောအားဖြင့်ကြီးမားသော string ကိုသို့မဟုတ် binary data များကိုကိုယ်စားပြုသည်။

ပြန်လာတန်ဖိုး - အောင်မြင်မှုအပေါ် စစ်မှန်တဲ့ ပြန်လာခြင်းနှင့်ပျက်ကွက်အပေါ် မှားယွင်းသော

2 ။ Send_long_data ၏အခြေအနေများကိုသုံးပါ

Send_long_data ကို အဓိကအားဖြင့်ဒေတာအမြောက်အများကို MySQL database များသို့လွှဲပြောင်းရန်အဓိကအားဖြင့်အသုံးပြုသည်။ ပုံမှန်အားဖြင့် MySQLI_STMT :: bind_param () bind_param () သည် parameters များကိုချည်နှောင်ရန်အသုံးပြုသည်။ (ဥပမာ - ဒေတာပမာဏသည်ကြီးမားသည် (ဥပမာ, ဖိုင်ကြီးများ, ကြီးမားသောစာသားအကွက်များစသဖြင့်ပါ 0 င်သည်။ ဤကန့်သတ်ချက်ကိုရှောင်ရှားရန် Send_long_Data နည်းလမ်းကိုဒေတာ၏အပိုင်းအစများသို့ဒေတာများကိုပို့ရန်အသုံးပြုနိုင်သည်။

3 ။ အခြေခံအသုံးပြုမှု

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

 <span><span><span class="hljs-keyword">CREATE</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> files (
    id </span><span><span class="hljs-type">INT</span></span><span> AUTO_INCREMENT </span><span><span class="hljs-keyword">PRIMARY</span></span><span> KEY,
    name </span><span><span class="hljs-type">VARCHAR</span></span><span>(</span><span><span class="hljs-number">255</span></span><span>),
    file_data LONGBLOB
);
</span></span>

ဤဇယားတွင်ဖိုင်အမည်နှင့်သက်ဆိုင်ရာဖိုင် binary data ကိုသိမ်းဆည်းထားသည်။ ကျွန်ုပ်တို့သည်အောက်ပါအဆင့်များမှတဆင့်ကြီးမားသောဖိုင်ဒေတာများကိုကျွန်ုပ်တို့ထည့်သည်။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);

</span><span><span class="hljs-comment">// ဆက်သွယ်မှုကိုစစ်ဆေးပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"ဆက်သွယ်မှုမအောင်မြင်ပါ: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error);
}

</span><span><span class="hljs-comment">// ပြင်ဆင်ထား SQL အသေအချာပေြာဆိုချက်</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO files (name, file_data) VALUES (?, ?)"</span></span><span>);

</span><span><span class="hljs-comment">// ပထမ ဦး ဆုံး parameter သည်ချည်နှောင်(ဖိုင်နာမည်)</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"s"</span></span><span>, </span><span><span class="hljs-variable">$name</span></span><span>);

</span><span><span class="hljs-comment">// ဖိုင်ဒေတာကိုဖတ်ပါ</span></span><span>
</span><span><span class="hljs-variable">$filePath</span></span><span> = </span><span><span class="hljs-string">'large_file.txt'</span></span><span>;
</span><span><span class="hljs-variable">$fileData</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>);

</span><span><span class="hljs-comment">// Big Data ကိုပို့ပါ</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">send_long_data</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-variable">$fileData</span></span><span>);

</span><span><span class="hljs-comment">// 设置ဖိုင်နာမည်</span></span><span>
</span><span><span class="hljs-variable">$name</span></span><span> = </span><span><span class="hljs-title function_ invoke__">basename</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>);

</span><span><span class="hljs-comment">// ကရိယာတန်းဆာ SQL အသေအချာပေြာဆိုချက်</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();

</span><span><span class="hljs-comment">// ဆက်သွယ်မှုကိုပိတ်ပါ</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

အထက်ပါကုဒ်များတွင်ဖိုင်အမည် ( s ဟူသောအမည်ကို) bind_param () နည်းလမ်းကိုမှတစ်ဆင့်ခုတ်လှဲသည်။ ဖိုင်များကို Send_long_Data () နည်းလမ်းဖြင့်ပေးပို့ခြင်းကိုပေးပို့နိုင်သည်, ထို့ကြောင့်ကြီးမားသောဖိုင်အချက်အလက်များကိုပေးပို့နိုင်သည်။

4 ။ Send_long_data ၏လုပ်ငန်းယန္တရား

  • Send_long_data ကို mySQL သို့ ဒေ တာများကိုပို့ပေးပါလိမ့်မည် ဒေတာများသည်ကြီးမားသည့်အခါ Send_long_data ကို အသုံးပြုခြင်းသည်မှတ်ဥာဏ်အလွန်အကျွံသုံးစွဲမှုနှင့် PHP Execute Time ကန့်သတ်ချက်များကိုရှောင်ရှားနိုင်သည်။

  • Big Data အမျိုးအစားများကိုထောက်ပံ့သည် - Send_long_data ကို ရေရှည်နှင့်ရှည်လျားသောဖိုင်များကိုတင်ခြင်းသို့မဟုတ်ထည့်သွင်းသည့်အခါ,

  • Parameter နံပါတ် - Send_long_data ကို ပို့ရန်အချက်အလက်ပိတ်ပင်တားဆီးမှုကိုခွဲခြားသတ်မှတ်ရန် parameter number ကိုအသုံးပြုသည်။ နံပါတ်သည် 0 မှစတင်သည်, ထို့ကြောင့် Send_long_data ကို အကြိမ်ပေါင်းများစွာဟုခေါ်ဆိုသည့်အခါမှန်ကန်သော parameter နံပါတ်ကိုသေချာစေရန်လိုအပ်သည်။

5 ။ မှတ်စုဖို့အရာ

  1. MySQL Configuration ကန့်သတ်ချက်များ - Send_long_data ကို သုံးသောအခါ MySQL configuration တွင် max_allowed_packet parameter ၏အရွယ်အစားကိုအာရုံစိုက်ရန်လိုအပ်သည်။ အကယ်. ကူးစက်သောအချက်အလက်များသည်ဤကန့်သတ်ချက်ထက်ကျော်လွန်ပါက, လက်ရှိပြင်ဆင်မှုကိုအောက်ပါ SQL ကြေငြာချက်မှတဆင့်စစ်ဆေးနိုင်သည်။

     <span><span><span class="hljs-keyword">SHOW</span></span><span> VARIABLES </span><span><span class="hljs-keyword">LIKE</span></span><span> </span><span><span class="hljs-string">'max_allowed_packet'</span></span><span>;
    </span></span>

    ဤတန်ဖိုးကိုပြောင်းလဲရန်လိုအပ်ပါက၎င်းကို MySQL configuration file ထဲတွင်၎င်းကိုပြုပြင်နိုင်သည်။

     <span><span><span class="hljs-attr">max_allowed_packet</span></span><span>=</span><span><span class="hljs-number">64</span></span><span>M
    </span></span>
  2. PHP Configuration ကန့်သတ်ချက်များ - PHP configuration file ရှိ upload_max_filesize နှင့် post_max_sizing parametersize file uploads အရွယ်အစားကိုကန့်သတ်နိုင်သည်။ Send_long_data ကို သုံးသောအခါဤ configurations များသည်ကြီးမားကြောင်းသေချာစေပါ။

  3. Database connection အတွက်အချိန်ကုန်ချိန်ညှိခြင်း - Send_long_data သည် Big Data ကိုအပိုင်းအစများဖြင့်ထုတ်လွှင့်သောကြောင့်ရေရှည်ဒေတာလုပ်ဆောင်မှုများသည် connection timeout ကိုဖြစ်ပေါ်စေနိုင်သည်။ MySQL (သို့) PHP အတွက်အချိန်ကုန်ချိန်ညှိချက်များကိုညှိခြင်းဖြင့်၎င်းကိုရှောင်ရှားနိုင်သည်။

  4. ဒေတာထုတ်လွှင့်မှုအမိန့် - Send_long_data ၏ခေါ်ဆိုမှု၏အမိန့်သည် parameters များကိုအမိန့်နှင့်ကိုက်ညီသည်။ ခေါ်ဆိုမှုများစွာပြုလုပ်သောအခါတိုင်းအချိန်တိုင်းဒေတာများကိုမှန်ကန်သော parameter အရေအတွက်နှင့်ကိုက်ညီကြောင်းသေချာပါစေ။

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

MySQLI_STMT :: Send_long_data သည်အလွန်လက်တွေ့ကျသောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ ဤလုပ်ဆောင်မှုကိုကျိုးကြောင်းဆီလျော်စွာအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်မှတ်ဥာဏ်သို့မဟုတ်ထုတ်လွှင့်ချိန်မလုံလောက်မှုပြ problem နာကိုရှောင်ရှားနေစဉ်ကြီးမားသောအချက်အလက်များကိုချောမွေ့စွာထည့်သွင်းရန်သေချာစေနိုင်သည်။ သို့သော် MySQL နှင့် PHP တို့၏သက်ဆိုင်ရာ configurations ကို data stritting ကိုကန့်သတ်မထားပါနှင့်။