PHP တွင် PDO (PHP Data Obserts) တွင်ကျွန်ုပ်တို့အားပြောင်းလွယ်ပြင်လွယ်ဒေတာဘေ့စ်စစ်ဆင်ရေး interface ကိုပေးသည်။ PDostatement :: FetchObjection function ကိုမှတစ်ဆင့်ကျွန်ုပ်တို့သည်မေးမြန်းမှုရလဒ်များကိုအရာဝတ်ထုထဲသို့တိုက်ရိုက်မြေပုံဆွဲနိုင်သည်။ ပြင်ဆင်ခြင်း နှင့် execute နည်းလမ်းများပေါင်းစပ်ခြင်းနှင့် execute နည်းလမ်းများသည်ကျွန်ုပ်တို့၏ code ကိုပိုမိုထိရောက်စွာနှင့်လုံခြုံစိတ်ချရစေနိုင်သည်။ ဤဆောင်းပါးတွင် PDostatement :: Fetchoboject function ကိုထိထိရောက်ရောက်အသုံးချနိုင်ပုံနှင့်နည်းလမ်းများ ပြုလုပ်ခြင်း နှင့်နည်းလမ်းများ ပြုလုပ်ရန် နည်းစနစ်များ။
PDostatement :: FetchObjection function ကို query ရလဒ်မှအချက်အလက်များရရန်နှင့်အချက်အလက်များကိုအရာဝတ်ထုတစ်ခုသို့ပြောင်းလဲရန်အသုံးပြုသည်။ Fetch နည်းလမ်းနှင့်မတူဘဲ array တစ်ခု၏ပုံစံဖြင့် FetchObject သည် query တွင်ရှာဖွေမှုရလဒ်များကိုအရာဝတ်ထုတစ်ခုအဖြစ်အသုံးပြုရန်ခွင့်ပြုသည်။
ဥပမာအားဖြင့်, အကယ်. query ရလဒ်ကိုအောက်ပါအချက်အလက်များကိုပြန်ပို့လျှင် -
သတ် | နံမယ် | အီးမေးလ် |
---|---|---|
1 | အဲီး | [email protected] |
2 | ဘွတ် | [email protected] |
FetchOccobject မှတစ်ဆင့်အချက်အလက်များကိုကျွန်ုပ်တို့ရယူနိုင်သည်။
<?php
$stmt = $pdo->query("SELECT * FROM users");
while ($user = $stmt->fetchObject()) {
echo $user->id . ' - ' . $user->name . ' - ' . $user->email . '<br>';
}
?>
ဤနည်းအားဖြင့်စုံစမ်းမှုရလဒ်များကို အသုံးပြုသူ အရာ 0 တ်ထုများသို့တိုက်ရိုက်ချိတ်ဆက်ထားပြီးလယ်ကွင်းများကိုအရာဝတ်ထုဂုဏ်သတ္တိများမှတစ်ဆင့်တိုက်ရိုက်ဝင်ရောက်နိုင်သည်။
ကြိုတင်ပြင်ဆင်ထားပြီး execute ကို အသုံးပြုခြင်းသည် SQL ဆေးထိုးခြင်းနှင့်အလားတူမေးမြန်းချက်များစွာလိုအပ်သည့်အခါစွမ်းဆောင်ရည်ကိုတိုးတက်စေနိုင်သည်။ ပြင်ဆင်မှု function ကို SQL ထုတ်ပြန်ချက်များကိုကြိုတင်မ ဆို အသုံးပြုရန်အသုံးပြုသည်။
ဥပမာအားဖြင့်, သုံးစွဲသူသတင်းအချက်အလက်များကိုအသုံးပြုသူအမည်ဖြင့်မေးမြန်းရန်လိုပါကရိုးရာအလေ့အကျင့်များသည်ကြိုးကြိုးများကိုတိုက်ရိုက် splice လုပ်ရန်ဖြစ်နိုင်သည်, သို့သော်၎င်းသည် SQL Injection ၏အန္တရာယ်ကိုဖြစ်စေနိုင်သည်။ ဤပြ problem နာကိုဖြေရှင်းရန် ပြင်ဆင်ထားပြီး execute ကို သုံးပါ။
<?php
$sql = "SELECT * FROM users WHERE name = :name";
$stmt = $pdo->prepare($sql);
$stmt->execute([':name' => 'Alice']);
$user = $stmt->fetchObject();
echo $user->id . ' - ' . $user->name . ' - ' . $user->email . '<br>';
?>
ဤဥပမာတွင် - အမည် - အမည်ကို အမည် ပေးထားသည့်နေရာတစ်ခုဖြစ်သည် ။ ၎င်းသည် SQL injection ပြ problem နာကိုရှောင်ရှားသည်။
variable များစွာကိုကိုင်တွယ်ဖြေရှင်းရန်လိုအပ်သည့်အခါအမည်ရှိ placewers များကိုအသုံးပြုခြင်းသည် Mark Placeholders မေးခွန်းထက် ပို. ဖတ်နိုင်ပြီးထိန်းသိမ်းထားနိုင်သည်။ အမည်ရှိ parawholders အမည်ရှိ SQL ထုတ်ပြန်ချက်များကိုနားလည်ရန်ပိုမိုလွယ်ကူစေရန်နှင့် ကွပ်မျက်ခံရသည့် အခါနှင့်ကိုက်ညီသော variable များကိုလည်းလွယ်ကူချောမွေ့စေသည်။
$sql = "SELECT * FROM users WHERE name = :name AND email = :email";
$stmt = $pdo->prepare($sql);
$stmt->execute([':name' => 'Alice', ':email' => '[email protected]']);
$user = $stmt->fetchObject();
echo $user->id . ' - ' . $user->name . ' - ' . $user->email . '<br>';
Execute လုပ်သည့်အခါ Associative Array ကိုဖြတ်သန်းခြင်းဖြင့် parameter တန်ဖိုးများကိုခညျြနှောငျနိုင်သည်။ ဤသည် code ကိုရှင်းလင်းရေးစေသည်နှင့် parameter သည်အမိန့်၏မှန်ကန်မှုကိုသေချာစေသည်။
$params = [
':name' => 'Alice',
':email' => '[email protected]'
];
$stmt = $pdo->prepare("SELECT * FROM users WHERE name = :name AND email = :email");
$stmt->execute($params);
$user = $stmt->fetchObject();
echo $user->id . ' - ' . $user->name . ' - ' . $user->email . '<br>';
ဖွံ့ဖြိုးရေးစဉ်အတွင်းပြ problems နာများကြုံတွေ့ရပါက SQL ထုတ်ပြန်ချက်များကို Debugd Debug သို့ Debugdumpparams ကို သုံးနိုင်သည်။ ၎င်းသည် SQL ကြေငြာချက်ကိုမှန်ကန်စွာတည်ဆောက်ထားခြင်းရှိ,
$stmt = $pdo->prepare("SELECT * FROM users WHERE name = :name");
$stmt->execute([':name' => 'Alice']);
$stmt->debugDumpParams(); // ထုတ်လုပ်ခြင်း SQL ကြေညာချက်နှင့် binding parameters တွေကို
$user = $stmt->fetchObject();
FetchOccobject Maps မေးမြန်းမှုသည်ပုံမှန်အားဖြင့် stdclass အရာဝတ်ထုများကိုဖြစ်ပေါ်စေသည်။ ရလဒ်ကိုသင်လည်းထုံးစံအတန်းသို့မြေပုံဆွဲနိုင်သည်။ ဥပမာအားဖြင့်, သင့်တွင် အသုံးပြုသူ အတန်းတစ်ခုရှိပါကသင်လုပ်နိုင်သည် -
class User {
public $id;
public $name;
public $email;
}
$sql = "SELECT * FROM users WHERE name = :name";
$stmt = $pdo->prepare($sql);
$stmt->execute([':name' => 'Alice']);
$user = $stmt->fetchObject('User');
echo $user->id . ' - ' . $user->name . ' - ' . $user->email . '<br>';
ဤနည်းအားဖြင့်ရလဒ်သည်ပုံမှန်အရာဝတ်ထုတစ်ခုမျှသာမဟုတ်ဘဲ အသုံးပြုသူ အတန်းအစား၏ဥပမာတစ်ခုနှင့်ဆက်စပ်လိမ့်မည်။
PDostatement :: fetchobject ကို factivections function များကိုအသုံးပြုခြင်းနှင့် လုပ်ဆောင်ခြင်းကို ပြင်ဆင်ခြင်း နှင့်လုပ်ဆောင်ခြင်းကိုအကောင်အထည်ဖော်နိုင်သည်။ Named placewershers နှင့် associative Array များကိုအသုံးပြုခြင်းသည်သင်၏ကုဒ်၏ဖတ်နိုင်မှုနှင့်ထိန်းသိမ်းခြင်းကိုတိုးတက်စေနိုင်သည်။ ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းစဉ်အတွင်း debugging function များကိုဆင်ခြင်တုံတရား၏ဆင်ခြင်တုံတရားအသုံးပြုခြင်းသည်ပြ problems နာများကိုလျင်မြန်စွာရှာဖွေရန်ကူညီနိုင်သည်။ ဤအကြံပြုချက်များဖြင့်ဒေတာဘေ့စ်ကိုပိုမိုထိရောက်စွာလုပ်ဆောင်နိုင်ပြီးသင်၏ကုဒ်၏လုံခြုံရေးနှင့်ဖတ်နိုင်မှုကိုသေချာစေနိုင်သည်။