PHP ၏ PHP ၏ pdo extension များကိုအသုံးပြုသောအခါ BindParam နှင့် Bindvalue တို့သည် အသုံးများသော parameterme binding method နှစ်ခုဖြစ်သည်။ ၎င်းတို့သည် function တွင်ဆင်တူသည်, SQL Query တွင် parameter သည် parameter များအတွက်တန်ဖိုးများကိုတန်ဖိုးထားမှုများပြုလုပ်နေသည်။ သို့သော်သူတို့သည်ကွဲပြားခြားနားစွာပြုမူကြသည်။ အထူးသဖြင့် SQL မေးမြန်းချက်များစွာလိုအပ်သည့် application များလိုအပ်သော application များပြုလုပ်သော applications များကိုတီထွင်သည့်အခါသူတို့၏ကွဲပြားခြားနားမှုများကိုနားလည်ရန်အရေးကြီးသည်။
binparam :
Bindaram သည် PHP variable ကို plpp variable ကို sql query အတွက်နေရာချထားရန်အသုံးပြုသည်။ Binding ပြီးနောက် SQL query ကိုအကောင်အထည်ဖော်သည့်အခါ variable ကိုဒေတာဘေ့စ်သို့လွှဲပြောင်းပေးလိမ့်မည်။ Bindaram ကို ရည်ညွှန်းခြင်းဖြင့်အတည်ပြုသည်။ ဆိုလိုသည်မှာ Quality ကွပ်မျက်ခံရသောအခါ PHP variable ၏လက်ရှိတန်ဖိုးသည်လက်ရှိတန်ဖိုးမှာဖြစ်သည်။ ထို့ကြောင့်, ဒီ variable ကို binding ပြီးနောက်ပြောင်းလဲလျှင်ပြုပြင်မွမ်းမံပါကစုံစမ်းစစ်ဆေးမှုကိုလုပ်ဆောင်သောအခါပြုပြင်ထားသောတန်ဖိုးကိုအသုံးပြုလိမ့်မည်။
ဥပမာ -
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$username = 'john';
$stmt->bindParam(':username', $username);
$username = 'jane'; // မီတာ၏တန်ဖိုးကိုပြုပြင်မွမ်းမံ
$stmt->execute(); // ပြုပြင်ထားသောတန်ဖိုးကိုကွပ်မျက်စဉ်အတွင်းအသုံးပြုလိမ့်မည် 'jane'
bindvalue :
Bindaram နှင့် မတူဘဲ , ဆိုလိုသည်မှာ binding သည်နောက်ဆက်တွဲ variable ပြုပြင်မွမ်းမံမှုများကြောင့်လက်ရှိတန်ဖိုးကိုမထိခိုက်စေဘဲသတ်မှတ်ထားလိမ့်မည်။ သင်က binding ပြီးနောက် variable ၏တန်ဖိုးကိုပြုပြင်မွမ်းမံရင်တောင်မေးခွန်းကိုကွပ်မျက်ရာတွင် binding ၏တန်ဖိုးကိုသင်အသုံးပြုနေဆဲဖြစ်သည်။
ဥပမာ -
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$username = 'john';
$stmt->bindValue(':username', $username);
$username = 'jane'; // မီတာ၏တန်ဖိုးကိုပြုပြင်မွမ်းမံ
$stmt->execute(); // ကွပ်မျက်သည့်အခါ binding ၏တန်ဖိုးကိုသုံးပါ 'john'
ရည်ညွှန်းခြင်းဖြင့်တန်ဖိုးကိုဖြင့်ဖြတ်သန်းသွားပါ ။
Bindaram ကို ရည်ညွှန်းခြင်းဖြင့်အတည်ပြုသည်။ ဆိုလိုသည်မှာ,
bindvalue တန်ဖိုးအားဖြင့်လွန်ဖြစ်ပါတယ်။ parameter ၏တန်ဖိုးကိုချည်နှောင်နေစဉ်အတွင်းဆုံးဖြတ်ထားပြီး variable တန်ဖိုး၏နောက်ဆက်တွဲပြောင်းလဲမှုကြောင့်ထိခိုက်လိမ့်မည်မဟုတ်ပါ။
ကြည့်ရှုပါ ။
အကယ်. သင် variable ၏တန်ဖိုးကိုပြန်လည်ပြုပြင်ရန်နှင့်အလျင်အမြန်ရှာဖွေခြင်းကိုအကြိမ်ကြိမ်ပြုစုပျိုးထောင်ခြင်းသို့မဟုတ်လုပ်ဆောင်ခြင်းကိုအကြိမ်ကြိမ်ပြန်လည်အကောင်အထည်ဖော်နေစဉ်အတွင်းပြန်လည်အကောင်အထည်ဖော်ရန်လိုအပ်ပါက Bindaram ကို သုံးနိုင်သည်။
အကယ်. သင်သည် SQL query သို့သတ်မှတ်ထားသောတန်ဖိုးကိုဖြတ်သန်းရန်လိုအပ်ပါကသင်က bindvalue ကို သုံးနိုင်သည်။ ကွပ်မျက်ခြင်းအတွက်ရိုးရှင်းလွယ်ကူခြင်း,
သင်တူညီသောစုံစမ်းမှုကိုအကြိမ်ပေါင်းများစွာလုပ်ဆောင်ရန်လိုအပ်သည်ဆိုပါစို့။ သင်စုံစမ်းတိုင်းအချိန်တိုင်းတွင် parameter ၏တန်ဖိုးကိုပြောင်းလဲရန်လိုအပ်သည်ဆိုပါစို့။ ဤအချိန်တွင် Bindaram သည် ပို. သင့်တော်သည်။ ဥပမာအားဖြင့်မတူညီသောသုံးစွဲသူများကိုကွင်းဆက်တစ်ခုတွင်ရှာဖွေသောအခါ -
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
foreach ($usernames as $username) {
$stmt->bindParam(':username', $username);
$stmt->execute();
}
အထက်ဖော်ပြပါကုဒ်များတွင် Bindaram သည် စုံစမ်းမှုကွပ်မျက်ခံရသည့်အခါတိုင်းလက်ရှိ $ အသုံးပြုသူအမည် တန်ဖိုးကိုအသုံးပြုသည်ကိုသေချာစေလိမ့်မည်။
သင်ချည်နှောင်လိုသောတန်ဖိုးသည် ပြောင်းလဲ လိမ့်မည်မဟုတ်ကြောင်းသင်သိပါက,
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindValue(':username', 'john');
$stmt->execute();
Bindaram နှင့် Bindvalue တို့သည် parameter အတွက်အသုံးပြုသောနည်းလမ်းများဖြစ်သည်။ 4 င်းတို့တွင်အဓိကခြားနားချက်ရှိသည် - Bindalam သည် ရည်ညွှန်းချက်ဖြင့်ချိတ်ဆက်ထားသည့်အတိုင်းအဖြေရှာသောအခါ, ၎င်းကိုအသုံးပြုသောအခါတိကျသောလိုအပ်ချက်များနှင့်အညီသင့်လျော်သောနည်းလမ်းကိုရွေးချယ်နိုင်သည်။
အကယ်. စုံစမ်းမှုဆိုင်ရာသတ်မှတ်ချက်များကိုပုံမှန်အဆင့်မြှင့်တင်ရန်လိုအပ်ပါက Bindaram ကို သုံးပါ။
parameter တန်ဖိုးကိုပုံသေသတ်မှတ်ထားပါက bindvalue ကို သုံးပါ။
နှစ်ခုအကြားခြားနားချက်ကိုနားလည်ခြင်းသည် PHP ပရိုဂရမ်များကိုပိုမိုထိရောက်စွာရေးဆွဲပြီးဖြစ်နိုင်ချေအမှားများကိုလျှော့ချနိုင်သည်။