ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PHP အတွက် PHP ကိုအသုံးပြုသောအခါ MySQLI_STMT :: bind_param () function သည်အလွန်အရေးကြီးသောကိရိယာတစ်ခုဖြစ်သည်။ ဤလုပ်ဆောင်ချက်သည်အထူးသဖြင့်စုံစမ်းစစ်ဆေးမှုများပြုလုပ်ရန်အတွက်အထူးသဖြင့်သင့်တော်သည်။ ၎င်း၏ parameter type သည်စုံစမ်းမှုသို့ကူးပြောင်းထားသောတန်ဖိုးများကိုမည်သို့ကိုင်တွယ်ရမည်ကိုသတ်မှတ်သည်။ ဤဆောင်းပါးသည် MySQLI_STMTMT :: Bind_param () function အတွက်ဘုံ parametermetery အမျိုးအစားများကိုအသေးစိတ်ဖော်ပြထားသည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်မည်သို့အသုံးပြုရမည်ကိုနားလည်ရန်ဥပမာများကိုအသုံးပြုပါမည်။
ပထမ ဦး စွာ bind_param function ၏အခြေခံ syntax ကိုပြန်လည်သုံးသပ်ကြပါစို့။
<span><span><span class="hljs-keyword">bool</span></span><span> mysqli_stmt::</span><span><span class="hljs-variable constant_">bind_param</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$types</span></span><span> , </span><span><span class="hljs-keyword">mixed</span></span><span> &</span><span><span class="hljs-variable">$var</span></span><span> , </span><span><span class="hljs-keyword">mixed</span></span><span> &$... )
</span></span>
$ အမျိုးအစားများ - ခညျြနှောငျ variable ကိုအမျိုးအစားတစ်ခုသို့မဟုတ်တစ်ခုထက်ပိုသောဇာတ်ကောင်တစ်ခုသို့မဟုတ်တစ်ခုထက်ပိုသော string တစ်ခု။ တစ်ခုချင်းစီကိုဇာတ်ကောင်တစ် ဦး parameter သည်အမျိုးအစားကိုကိုယ်စားပြုတယ်။
$ VAL, $ ... : ဒီဟာတွေကသင်ချည်နှောင်ချင်တဲ့ varioades တွေဖြစ်ပြီးသူတို့က ဒေါ်လာအမျိုးအစား တွေမှာသတ်မှတ်ထားတဲ့အတိုင်းမှာထားလိမ့်မယ်။
အက္ခရာစဉ်တစ်ခုစီတွင်ဇာတ်ကောင်တစ်ခုစီသည်ဒေ တာ အမျိုးအစားကိုကိုယ်စားပြုသည်။ ဇာတ်ကောင်အမျိုးအစားများမှာ -
i : ကိန်းဂဏန်းကိုကိုယ်စားပြုတယ်။
D : နှစ်ဆတိကျသောရေပေါ်နံပါတ် (နှစ်ဆ) ကိုကိုယ်စားပြုသည်။
S : string ကိုကိုယ်စားပြုတယ်။
B : Blob (Binary Mist Object) အမျိုးအစားကိုကိုယ်စားပြုသောအချက်အလက်များ။
ငါ ကိန်း parameters တွေကိုချည်ဖို့အသုံးပြုသည်။ ၎င်းသည်အသုံးများသောအမျိုးအစားများအနက်မှတစ်ခုဖြစ်သည်။
ဥပမာ -
<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 id = ?"</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">$id</span></span><span>); </span><span><span class="hljs-comment">// $idဒါဟာကိန်းတစ်ခုပါ</span></span><span>
</span><span><span class="hljs-variable">$id</span></span><span> = </span><span><span class="hljs-number">1</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>
ဤဥပမာတွင် $ ID သည် query story တွင် placeholder သို့ integer type တစ်ခုအဖြစ်ချည်နှောင်ထားပါသလား ။ ။
D နှစ်ဆ - တိကျသောရေပေါ်နံပါတ်အမျိုးအစားကို parameters များကို parameters များကိုအသုံးပြုလေ့ရှိသည်။
ဥပမာ -
<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 products (price) VALUES (?)"</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">"d"</span></span><span>, </span><span><span class="hljs-variable">$price</span></span><span>); </span><span><span class="hljs-comment">// $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-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span>
ဤဥပမာတွင် ဒေါ်လာစျေးနှုန်း သည် SQL ကြေငြာချက်တွင် place-pletoating နံပါတ်အမျိုးအစားအဖြစ် placeholder တစ်ခုနှင့်ဆက်စပ်နေသည်။
S သည် string parameters တွေကို binding parameters တွေကိုများအတွက်အသုံးအများဆုံးအမျိုးအစားများထဲကတစ်ခုဖြစ်သည်။ ၎င်းသည်ဂဏန်းပုံစံရှိစာသားဒေတာသို့မဟုတ်ကြိုးများဖြစ်သော S သည်လိုအပ်သည်။
ဥပမာ -
<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 username = ?"</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">$username</span></span><span>); </span><span><span class="hljs-comment">// $usernameဒါဟာ string တစ်ခုပါ</span></span><span>
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">"john_doe"</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>
ဤဥပမာတွင် ဒေါ်လာသုံးစွဲသူအမည်မှာ string type တစ်ခုနှင့်ချိတ်ဆက်ထားပြီး query user ကိုအသုံးပြုသူအမည်မှတစ်ဆင့်ရှာဖွေသည်။
Binary Data ကို Binary Data ကို Binary Data ကိုပုံများသို့မဟုတ်ဖိုင်များကဲ့သို့သော Blob အမျိုးအစားဒေတာများကိုအသုံးပြုသည်။ ဤအမျိုးအစားသည်ကြီးမားသောဒေတာပမာဏသို့မဟုတ် binary files များကိုကိုင်တွယ်ရန်အသုံးပြုသည်။
ဥပမာ -
<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 images (image_data) VALUES (?)"</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">"b"</span></span><span>, </span><span><span class="hljs-variable">$imageData</span></span><span>); </span><span><span class="hljs-comment">// $imageDataဒါဟာ binary ဒေတာပါပဲ</span></span><span>
</span><span><span class="hljs-variable">$imageData</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">"path/to/image.jpg"</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>
ဤဥပမာတွင် $ Imagedata သည် file data ကိုထည့်သွင်းရန်အသုံးပြုသော binary data များအဖြစ်စုံစမ်းမှုကြေငြာချက်နှင့်ဆက်စပ်နေသည်။
SQL ကြေငြာချက်တွင် plant_param () တွင် Placeholler များစွာရှိသည့်အခါ variable များကိုပေါင်းစပ်နိုင်ပြီး variable တစ်ခုစီကို ဒေါ်လာအမျိုးအစားများ ဖြင့်အက္ခရာများဖြင့်ကိုယ်စားပြုနိုင်သည်။
ဥပမာ -
<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">"UPDATE users SET name = ?, age = ? WHERE id = ?"</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">"ssi"</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-variable">$id</span></span><span>);
</span><span><span class="hljs-variable">$name</span></span><span> = </span><span><span class="hljs-string">"Alice"</span></span><span>;
</span><span><span class="hljs-variable">$age</span></span><span> = </span><span><span class="hljs-number">30</span></span><span>;
</span><span><span class="hljs-variable">$id</span></span><span> = </span><span><span class="hljs-number">1</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>
ဤဥပမာတွင် $ အမည်သည် string ( s ) ကိုခညျြနှောငျ, $ age သည် ကိန်းဂဏန်း ( 1 ) နှင့်ဆက်စပ်နေသည်။ $ အမျိုးအစားများ parameter သည် "SSI" ဖြစ်ပြီး, placeholders သုံးခုကိုအမိန့်နှင့်ကိုက်ညီသည်။
Type Strict Match ကို ရိုက်ပါ။ bind_param ကို ခေါ်သည့်အခါ $ အမျိုးအစား အမျိုးအစားများတွင်သတ်မှတ်ထားသောအမျိုးအစားကိုတင်းတင်းကျပ်ကျပ်နှင့်တင်းကြပ်စွာကိုက်ညီမှုရှိစေရန်သင်သေချာစွာပြုလုပ်ရမည်။
တန်ဖိုးများကိုရည်ညွှန်းသည် ။ Bind_param () သည် တန်ဖိုးများမဟုတ်ဘဲ parameters များကိုကိုးကားရန်ဖြတ်သန်းရန်လိုအပ်သည်။ အကယ်. သင်သည်ကိုးကားမည့်အစားတန်ဖိုးများကိုတိုက်ရိုက်ဖြတ်သန်းပါကလုပ်ဆောင်ချက်သည်ဤ parameters များကိုမှန်ကန်စွာကိုင်တွယ်လိမ့်မည်မဟုတ်ပါ။
Parameter type and Database အမျိုးအစားအကြားဆက်စပ်မှု - အမှန်တကယ်အသုံးပြုမှုတွင်ဒေတာဘေ့စ်စားပွဲရှိဒေတာအမျိုးအစားပေါ် မူတည်. butt parameter type ကိုဆုံးဖြတ်သင့်သည်။ အကယ်. ဒေတာဘေ့စ်ကွက်သည် floating နံပါတ်အမျိုးအစားတစ်ခုဖြစ်ပါက d ကို သုံးပါ။ အကယ်. ၎င်းသည် string အမျိုးအစားပါက S ကို သုံးပါ။
MySQLI_STMT :: bind_param () သည် SQL Injection နှင့် SQL query query parameters များကိုကာကွယ်ရန်အလွန်အရေးကြီးသောလုပ်ဆောင်ချက်ဖြစ်သည်။ ၎င်း၏ parameter သည်အမျိုးအစားများကိုမှန်ကန်စွာအသုံးပြုခြင်းအားဖြင့်ဒေတာဘေ့စ်လုပ်ငန်းများသည်ပိုမိုလုံခြုံမှုရှိပြီးပိုမိုထိရောက်စေရန်သေချာစေနိုင်သည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဤဇာတ်ကောင်အမျိုးအစားများကိုနားလည်သဘောပေါက်ခြင်းနှင့်မှန်ကန်သောအသုံးပြုခြင်းသည် code ၏ထိန်းသိမ်းမှုနှင့်လုံခြုံမှုကိုများစွာတိုးတက်စေလိမ့်မည်။
ဘုံအမျိုးအစားများတွင်ကိန်းဂဏန်းများ ( 1 ), နှစ်ချက် - တိကျသောရေပေါ်နံပါတ်များ ( D ), strings ( s ) နှင့် binary data များပါဝင်သည်။ ရှုပ်ထွေးသောဒေတာဘေ့စ်လုပ်ငန်းများကိုကိုင်တွယ်သည့်အခါတိုင်းမူကွဲတစ်ခုချင်းစီ၏အမျိုးအစားကိုမှန်ကန်စွာဖြည့်ဆည်းပေးခြင်းသည်စုံစမ်းမှုကြေညာချက်ကိုမျှော်လင့်ထားသည့်ကြေညာချက်ကိုအလားအလာရှိသောကြောင့်အချက်အလက်များကိုကာကွယ်နိုင်ရန်နှင့်အချက်အလက်များကိုကာကွယ်နိုင်သည်။