MySQLI_STMT :: Bind_Param ၏ဒုတိယ pareter သည်အောက်ပါစာလုံးများဖြစ်နိုင်သော binding variable အမျိုးအစားကိုသတ်မှတ်ရန်အသုံးပြုသည်။
i : ကိန်း
D : နှစ်ထပ် pletoating type (နှစ်ဆ)
S : String (string)
B : Binary Data (BLOB)
အသုံးအများဆုံးအမျိုးအစားပြောင်းလဲခြင်းအမှားအယွင်းတစ်ခုမှာ bind_param သို့ဖြတ်သွားသော variable အမျိုးအစားသည်မျှော်လင့်ထားသည့်အမျိုးအစားနှင့်ကိုက်ညီမှုမရှိပါ။ ဥပမာအားဖြင့်, အကယ်. သင်သည်ကိန်း ( 1 ) ကို SQL ကြေငြာချက်တွင်အမှန်တကယ်မျှော်လင့်သော်လည်း String အမျိုးအစား Variable ကိုအမှန်တကယ်ဖြတ်သန်းသွားမည်ဆိုပါက MySQL သည် string ကို 0 သို့မဟုတ်အမှားတစ်ခုသို့ပြောင်းလဲလိမ့်မည်။
အမှားဥပမာ -
<span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM users WHERE age = ?"</span></span><span>);
</span><span><span class="hljs-variable">$age</span></span><span> = </span><span><span class="hljs-string">"25"</span></span><span>; </span><span><span class="hljs-comment">// string အမျိုးအစား</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"i"</span></span><span>, </span><span><span class="hljs-variable">$age</span></span><span>); </span><span><span class="hljs-comment">// binding အမျိုးအစားအမှား,ဒါဟာကိန်းဂဏန်းဖြစ်သင့်သည်(i)</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span> ဖြေရှင်းချက် -
ချည်ထားသော variable အမျိုးအစားသည်မျှော်လင့်ထားသည့် SQL စုံစမ်းမှုကြေညာချက်အမျိုးအစားနှင့်ကိုက်ညီကြောင်းသေချာပါစေ။ အကယ်. variable အမျိုးအစားများမကိုက်ညီပါကသင်သည်ပထမ ဦး ဆုံးအမျိုးအစားပြောင်းလဲခြင်းနှင့်ခညျြနှောငျနိုင်ပါတယ်။
<span><span><span class="hljs-variable">$age</span></span><span> = </span><span><span class="hljs-number">25</span></span><span>; </span><span><span class="hljs-comment">// ၎င်းသည်ကိန်းဂဏန်းအမျိုးအစားတစ်ခုဖြစ်ကြောင်းသေချာပါစေ</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"i"</span></span><span>, </span><span><span class="hljs-variable">$age</span></span><span>); </span><span><span class="hljs-comment">// binding ကိန်း</span></span><span>
</span></span>MySQLI_STMT :: bind_param function သည် null တန်ဖိုးများကိုထုတ်လုပ်သည့်အခါအထူးဖြစ်သည်။ PHP တွင် NULL သည် အတိအလင်းချည်နှောင်ထားရမည် ။ ဒီလိုမှမဟုတ်ရင်ကွပ်မျက်မှုကျရှုံးမှုဒါမှမဟုတ်မမှန်ကန်ပါ။
အမှားဥပမာ -
<span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO users (name, age) VALUES (?, ?)"</span></span><span>);
</span><span><span class="hljs-variable">$name</span></span><span> = </span><span><span class="hljs-string">"John"</span></span><span>;
</span><span><span class="hljs-variable">$age</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>; </span><span><span class="hljs-comment">// nullအဘိုး</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"si"</span></span><span>, </span><span><span class="hljs-variable">$name</span></span><span>, </span><span><span class="hljs-variable">$age</span></span><span>); </span><span><span class="hljs-comment">// အမှား,တိုက်ရိုက်ချည်နှောင်လို့မရဘူးNULL</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span> ဖြေရှင်းချက် -
Null တန်ဖိုးများကိုချည်နှောင်သောအခါ, Bind_param သည် Null ၏တိုက်ရိုက်စည်းမျဉ်းများကိုမပံ့ပိုးပါ ။ အသုံးအများဆုံးနည်းလမ်းမှာ MySQLI_STMT :: Send_long_data ကို သုံးရန်ဖြစ်သည်။ သို့သော်၎င်းသည် null တန်ဖိုးများကိုကိုင်တွယ်ရန် ပို. ခက်ခဲသည်။
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$age</span></span><span> === </span><span><span class="hljs-literal">null</span></span><span>) {
</span><span><span class="hljs-variable">$age</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-comment">// 或者根据实际需求设置一个默认အဘိုး</span></span><span>
}
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"si"</span></span><span>, </span><span><span class="hljs-variable">$name</span></span><span>, </span><span><span class="hljs-variable">$age</span></span><span>); </span><span><span class="hljs-comment">// ချည်နေှာင်默认အဘိုး</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span>တခါတရံတွင်ကျွန်ုပ်တို့သည်နံပါတ်များကိုကြိုးကြိုးများအဖြစ်ဖြတ်သန်းခြင်းသို့မဟုတ်အခြားလမ်းတစ်လမ်းများကြုံတွေ့ရသည်။ MySQL သည်အချို့သောကိစ္စရပ်များတွင်အမျိုးအစားပြောင်းလဲမှုများကိုအလိုအလျောက်လုပ်ဆောင်လိမ့်မည်ဖြစ်သော်လည်း၎င်းသည်စွမ်းဆောင်ရည်ပြ issues နာများသို့မဟုတ်ကြိုတင်ခန့်မှန်း။ မရသောအပြုအမူကိုဖြစ်ပေါ်စေနိုင်သည်။
အမှားဥပမာ -
<span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM products WHERE price = ?"</span></span><span>);
</span><span><span class="hljs-variable">$price</span></span><span> = </span><span><span class="hljs-number">199.99</span></span><span>; </span><span><span class="hljs-comment">// 价格是浮动数အဘိုး</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></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">$price</span></span><span>); </span><span><span class="hljs-comment">// အမှား,အသုံးပြုသင့်သည်d(double)ပုံနှိပ်စာ</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span> ဖြေရှင်းချက် -
အကယ်. သင်သည် floating value ကိုဖြတ်သန်းသွားပါက s (string) အစား t အမျိုးအစား d (နှစ်ဆ) ကိုသေချာစွာသုံးပါ။ ၎င်းသည်မှန်ကန်သောဒေတာအမျိုးအစား pass ကိုသေချာစေရုံသာမကမေးမြန်းမှု၏ထိရောက်မှုကိုလည်းပိုမိုကောင်းမွန်စေသည်။
<span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"d"</span></span><span>, </span><span><span class="hljs-variable">$price</span></span><span>); </span><span><span class="hljs-comment">// ချည်နေှာင်浮动数အဘိုး</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span>Bind_param သည် ရိုးရှင်းသောစကေးအမျိုးအစားများ (အရေးပါသော, floating တန်ဖိုး, string, string, binary data) ကိုသာထောက်ပံ့သည်။ အကယ်. Array တစ်ခုသို့မဟုတ်အရာဝတ်ထုလွန်သွားလျှင် bind_param ကျရှုံးလိမ့်မည်။ ထို့ကြောင့်, ရှုပ်ထွေးသောဒေတာအမျိုးအစားများမသွားမီအချက်အလက်များကိုကြိုတင်သတ်မှတ်ထားရန်လိုအပ်သည်။
အမှားဥပမာ -
<span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO users (preferences) VALUES (?)"</span></span><span>);
</span><span><span class="hljs-variable">$preferences</span></span><span> = [</span><span><span class="hljs-string">"color"</span></span><span> => </span><span><span class="hljs-string">"blue"</span></span><span>, </span><span><span class="hljs-string">"size"</span></span><span> => </span><span><span class="hljs-string">"L"</span></span><span>]; </span><span><span class="hljs-comment">// 数组ပုံနှိပ်စာ</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></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">$preferences</span></span><span>); </span><span><span class="hljs-comment">// အမှား,Array ကိုတိုက်ရိုက်ချည်နှောင်။ မရပါ</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span> ဖြေရှင်းချက် -
Array သို့မဟုတ်အရာဝတ်ထုတစ်ခုကိုမဖြတ်ခင်က၎င်းကို JSON string သို့မဟုတ်အခြားပုံစံသို့ခေါ်ယူရန်လိုအပ်သည်။
<span><span><span class="hljs-variable">$preferences</span></span><span> = </span><span><span class="hljs-title function_ invoke__">json_encode</span></span><span>([</span><span><span class="hljs-string">"color"</span></span><span> => </span><span><span class="hljs-string">"blue"</span></span><span>, </span><span><span class="hljs-string">"size"</span></span><span> => </span><span><span class="hljs-string">"L"</span></span><span>]);
</span><span><span class="hljs-variable">$stmt</span></span><span>-></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">$preferences</span></span><span>); </span><span><span class="hljs-comment">// ချည်နေှာင်JSONကြိုး</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span>ချည်နံပါတ်သည်သတ်မှတ်ထားသောအမျိုးအစားအများဆုံးအကွာအဝေးထက်ကျော်လွန်ပါကအမျိုးအစားပြောင်းလဲခြင်းအမှားတစ်ခုပေါ်ပေါက်လာလိမ့်မည်။ ကိန်းဂဏန်းများ ( 1 ) အတွက်များသောအားဖြင့် -2,147,483,648 မှ 2,147,483,647 အထိရှိသည်။ floating တန်ဖိုးများအတွက် ( ) ) အတွက်အကွာအဝေးကပိုကြီးပေမယ့်အထက်ကန့်သတ်ချက်တစ်ခုရှိသေးတယ်။
အမှားဥပမာ -
<span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO large_numbers (value) VALUES (?)"</span></span><span>);
</span><span><span class="hljs-variable">$value</span></span><span> = </span><span><span class="hljs-number">1000000000000</span></span><span>; </span><span><span class="hljs-comment">// အလွန်ကြီးမားသောနံပါတ်များ</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"i"</span></span><span>, </span><span><span class="hljs-variable">$value</span></span><span>); </span><span><span class="hljs-comment">// အမှား,နံပါတ်များသည်ကိန်းဂဏန်းများမှထွက်နေသည်</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span> ဖြေရှင်းချက် -
အကယ်. လွန်သွားသောနံပါတ်သည်ကိန်းဂဏန်းများကိုပြင်ပတွင်ရှိပါကရေငွေ့များကိုရှောင်ရှားရန် floating type ( ) ) ကိုသုံးနိုင်သည်။
<span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"d"</span></span><span>, </span><span><span class="hljs-variable">$value</span></span><span>); </span><span><span class="hljs-comment">// 使用双精度浮动数အဘိုး</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span>
သက်ဆိုင်သောတက်(ဂ်)များ:
mysqli_stmt