လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> သုညဖောင်ဒေးရှင်းမှစတင်ခြင်း - MySQLI_STMMT မှတစ်ဆင့် Prosprocessing ထုတ်ပြန်ချက်များကိုမည်သို့ဖန်တီးရမည်နည်း :: __ တည်ဆောက်ခြင်း

သုညဖောင်ဒေးရှင်းမှစတင်ခြင်း - MySQLI_STMMT မှတစ်ဆင့် Prosprocessing ထုတ်ပြန်ချက်များကိုမည်သို့ဖန်တီးရမည်နည်း :: __ တည်ဆောက်ခြင်း

gitbox 2025-09-16

1

Preprocessing ထုတ်ပြန်ချက်များသည် SQL Query များကိုကွပ်မျက်ရန်နည်းလမ်းဖြစ်သည်။ ၎င်းသည် SQL Queries များကိုအပိုင်းနှစ်ပိုင်းခွဲပေးသည်။

  • Preprocessing Stage - SQL ထုတ်ပြန်ကြေငြာချက်ကိုဒေတာဘေ့စ်သို့ပို့ပါ။ ဒေတာဘေ့စ်သည် SQL ကြေငြာချက်ကိုပြုစုသည်။ ယခုအချိန်တွင်စုံစမ်းမှုတွင်ရှာဖွေမှုတွင်ကြည့်ရှုနိုင်သောအပိုင်း (ဥပမာအသုံးပြုသူထည့်သွင်းမှုကဲ့သို့သော) ကို SQL သို့ချက်ချင်းဖြည့်စွက်ခြင်းမရှိသော်လည်း placeholder (များသောအားဖြင့် ? ) ကိုကိုယ်စားပြုသည်။

  • Execution Phase : ကွပ်မျက်ခံရစဉ်အတွင်းအမှန်တကယ် parameter သည် placeholder ကိုအစားထိုးရန်အတွက် parameter value ကိုအစားထိုးရန်နှင့်ဒေတာဘေ့စ်သည်ကြေညာချက်ကိုတင်ထားသည်။

ဤချဉ်းကပ်မှု၏အားသာချက်မှာဒေတာဘေ့စ်သည်မေးမြန်းချက်များကိုကြိုတင်ပြင်ဆင်မှုများကိုကြိုတင်ပြင်ဆင်ထားနိုင်ပြီးစုံစမ်းမှုတစ်ခုစီ၏သတ်မှတ်ချက်များကိုလုံခြုံစွာစစ်ဆေးနိုင်ပြီး SQL Injection ၏အန္တရာယ်ကိုရှောင်ရှားနိုင်သည်။


2 ။ MySQLI_STMMT ကို သုံး. preprocessing ကြေညာချက်ကိုဖန်တီးပါ။ :: __ တည်ဆောက်ခြင်း

PHP တွင် MySQLI_STMTMT :: __ တည်ဆောက်ခြင်းသည် MySQLI_STMT :: __ တည်ဆောက်ခြင်း သည် MySQLI_STMT အတန်းအစား၏ဆောက်လုပ်ရေးဖြစ်သည်။

အဆင့်ခြုံငုံသုံးသပ်ချက်:

  1. ဒေတာဘေ့စ်ဆက်သွယ်မှုတစ်ခုတည်ဆောက်ပါ ။ ပထမတစ်ခုသည်ဒေတာဘေ့စ်ဆက်သွယ်မှုတစ်ခုကိုဖန်တီးရန် MySQLI_Connect သို့မဟုတ် MySQLI () MySQLI () ကို သုံးရန်လိုအပ်သည်။

  2. SQL ထုတ်ပြန်ချက်များကိုပြင်ဆင်ပါ ။ Placeholders နှင့် SQL ထုတ်ပြန်ချက်များကိုသတ်မှတ်ပါ။

  3. preprocessing statements ကို အစပြု . MySQLI_PREPARE သို့မဟုတ် MYSQLI_STMTMT ကို အသုံးပြု. PROPOCTEND ထုတ်ပြန်ချက်များကိုဖန်တီးပါ။ :: __ တည်ဆောက်ခြင်း

  4. Bind Parametersents : Preprocessing ထုတ်ပြန်ချက်များတွင် placeholders မှ variable တန်ဖိုးများကိုဖြည့်ဆည်းရန် Bind_param နည်းလမ်းကိုသုံးပါ။

  5. Execution ထုတ်ပြန်ချက် - Preprocessing ထုတ်ပြန်ကြေငြာချက်ကိုလုပ်ဆောင်ရန် Execute နည်းလမ်းကိုသုံးပါ။


3 ။ နမူနာကုဒ်

အသုံးပြုသူအချက်အလက်များကိုအမည်, အီးမေးလ်နှင့်အသက်အရွယ်အပါအ 0 င်အသုံးပြုသူအချက်အလက်များကိုအသုံးပြုသူအချက်အလက်များကိုထည့်သွင်းလိုသည်ဆိုပါစို့။ ဒီမှာသတ်သတ်မှတ်မှတ်ကုဒ်ဥပမာတစ်ခု -

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 1. ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ</span></span><span>
</span><span><span class="hljs-variable">$servername</span></span><span> = </span><span><span class="hljs-string">"localhost"</span></span><span>;
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">"root"</span></span><span>;
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>;
</span><span><span class="hljs-variable">$dbname</span></span><span> = </span><span><span class="hljs-string">"test"</span></span><span>;

</span><span><span class="hljs-variable">$conn</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-variable">$servername</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$dbname</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">$conn</span></span><span>-&gt;connect_error) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Connection failed: "</span></span><span> . </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;connect_error);
}

</span><span><span class="hljs-comment">// 2. placeholder ကိုသတ်မှတ်ပါ SQL အသေအချာပေြာဆိုချက်</span></span><span>
</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"INSERT INTO users (name, email, age) VALUES (?, ?, ?)"</span></span><span>;

</span><span><span class="hljs-comment">// 3. 创建预处理အသေအချာပေြာဆိုချက်</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>);

</span><span><span class="hljs-comment">// Preprocessing အောင်မြင်မှုရှိမရှိစစ်ဆေးပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'Error preparing statement: '</span></span><span> . </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;error);
}

</span><span><span class="hljs-comment">// 4. parameters တွေကိုချည်ထား</span></span><span>
</span><span><span class="hljs-variable">$name</span></span><span> = </span><span><span class="hljs-string">"John Doe"</span></span><span>;
</span><span><span class="hljs-variable">$email</span></span><span> = </span><span><span class="hljs-string">"[email protected]"</span></span><span>;
</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">// "sss" ခညျြနှောငျကိုယ်စားပြုသော variable ကိုအမျိုးအစား,ကြိုးနှင့်သက်ဆိုင်သော、ကြိုး、ကိန်း</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">"ssi"</span></span><span>, </span><span><span class="hljs-variable">$name</span></span><span>, </span><span><span class="hljs-variable">$email</span></span><span>, </span><span><span class="hljs-variable">$age</span></span><span>);

</span><span><span class="hljs-comment">// 5. 执行预处理အသေအချာပေြာဆိုချက်</span></span><span>
</span><span><span class="hljs-keyword">if</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-keyword">echo</span></span><span> </span><span><span class="hljs-string">"New record created successfully"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Error: "</span></span><span> . </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;error;
}

</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">$conn</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>

4 ။ code ကိုခွဲခြမ်းစိတ်ဖြာ

  • ဒေတာဘေ့စ်ဆက်သွယ်မှုတစ်ခုကိုဖန်တီးပါ ။ ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန် MySQLI () နည်းလမ်းကိုသုံးပါ။ ဆက်သွယ်မှုမအောင်မြင်ပါကပရိုဂရမ်သည်အမှားအယွင်းတစ်ခုကိုရပ်တန့်ပြီးပြလိမ့်မည်။

  • SQL ကြေငြာချက် - placeholders များနှင့်အတူ SQL ကြေငြာချက်တစ်ခု (အမည်, အီးမေးလ်, အိုမင်းခြင်း) တန်ဖိုးများ (?, age, age) တန်ဖိုးများကိုသတ်မှတ်ခြင်း (?) ဤတွင် ကျွန်ုပ်တို့သည်နောက်ဆက်တွဲခြေလှမ်းများမှတဆင့်ဒေတာများကိုပြောင်းလဲခြင်းကိုဆိုလိုသည်။

  • ပြင်ဆင်ပါ - $ conn-> ပြင်ဆင်မှု ($ sql) နည်းလမ်းဖြင့်ကြိုတင်ကြေငြာချက်တစ်ခုဖန်တီးပါ။ အကယ်. ဖန်တီးမှုမအောင်မြင်ပါကအမှားအယွင်းတစ်ခုသည်ရလဒ်ဖြစ်လိမ့်မည်။

  • Bind Parametersents : $ stmt_param ("SSI", $ အမည်, $ ema email £, $ အသက်အရွယ်) နည်းလမ်းများသည် variable variable များ, $ အီးမေးလ် , $ age and age ကို binds ? SQL ကြေညာချက်တွင် placeholder ။ "SSI" သည် parameter ၏ data အမျိုးအစားကိုကိုယ်စားပြု သည်

  • Execute ထုတ်ပြန်ချက် - ကြိုတင်သတ်မှတ်ထားသောထုတ်ပြန်ချက်များကို $ stmt-> Execute မှတဆင့် Exprocessate ထုတ်ပြန်ချက်များ Execute လုပ်ပါ () ။ အကယ်. ကွပ်မျက်သည်အောင်မြင်လျှင်အောင်မြင်မှုသတင်းစကားကိုပြန်ပို့ပေးလိမ့်မည်။

  • Cloude Resource : Execute ပြီးနောက်သင်အရင်းအမြစ်ကိုလွှတ်ပေးရန်ကြိုတင်သတ်မှတ်ထားသောကြေညာချက်နှင့်ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုပိတ်ရန်လိုအပ်သည်။


5 ။ Preprocessing ထုတ်ပြန်ချက်များ၏အားသာချက်များ

  • SQL Injection ကိုကာကွယ်ခြင်း - SQL ထုတ်ပြန်ချက်များကိုတိုက်ရိုက်ခွဲခြားမည့်အစား placeholders များကိုအသုံးပြုခြင်းအားဖြင့်အရေးကြီးသောအသုံးပြုသူများသည်အထူးအက္ခရာများကို 0 င်ရောက်ခြင်းဖြင့် SQL ဆေးထိုးတိုက်ခိုက်မှုများကိုထိရောက်စွာတားဆီးနိုင်သည်။

  • စွမ်းဆောင်ရည်ကိုတိုးတက်အောင်လုပ်ပါ

  • ရှင်းလင်းသောကုဒ် - ကြိုတင်သတ်မှတ်ထားသောထုတ်ပြန်ချက်များကိုအသုံးပြုခြင်းအားဖြင့် Code ဖွဲ့စည်းပုံကိုရှင်းလင်းစွာပြုလုပ်နိုင်သည်။

  • သက်ဆိုင်သောတက်(ဂ်)များ:

    mysqli_stmt