PHP ၏ PDO (PHP Data Obserts) ကိုဒေတာဘေ့စ်လုပ်ငန်းများအတွက်အသုံးပြုသည့်အခါ PDostatement :: Fetchobjection သည်ရလဒ်ကိုအရာဝတ်ထုတစ်ခုသို့တိုက်ရိုက်မြေပုံဆွဲရန်အလွန်အဆင်ပြေသောနည်းလမ်းဖြစ်သည်။ သို့သော်အမှန်တကယ်အသုံးပြုမှုတွင်ကျွန်ုပ်တို့သည်ဒေတာဘေ့စ်တွင် Null တန်ဖိုးများတည်ရှိရာအခြေအနေများနှင့်မကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ အကယ်. unprocessed မှထွက်ခွာသွားပါကဤ null valuses များသည်စီးပွားရေးဆိုင်ရာယုတ္တိဗေဒဆိုင်ရာခြွင်းချက်များသို့မဟုတ်မမျှော်လင့်သောအမှားများကိုပစ်ချနိုင်သည်။
ဤဆောင်းပါးသည် ဒေတာဗစ်ဖ် အသုံးပြုသောအခါဒေတာဗူးကိုအသုံးပြုသည့်အခါဒေတာဗေ့စ်တွင် တရားမျှတသော တန်ဖိုးများကိုမည်သို့မှန်ကန်စွာကိုင်တွယ်နိုင်မည်ကိုအသေးစိတ်ရှင်းပြပါလိမ့်မည်။
FetchocboPJOCTOCTOCT သည် စုံစမ်းမှုရလဒ်ကိုပြန်လည်ရောက်ရှိပြီးအရာဝတ်ထုတစ်ခုသို့မြေပုံဆွဲသည်။ အရိုးရှင်းဆုံးသောဥပမာကုဒ်မှာအောက်ပါအတိုင်းဖြစ်သည် -
<?php
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');
$stmt = $pdo->query('SELECT id, name, email FROM users WHERE id = 1');
$user = $stmt->fetchObject();
echo $user->name;
ဤဥပမာတွင် အီးမေးလ် အကွက်သည်ဒေတာဗေ့စ်တွင် null ဖြစ်ပါက $ user-> အီးမေးလ်သည်လည်း Null ဖြစ်လိမ့်မည်။
ပုံမှန်အားဖြင့် PHP သည် Null ကိုင်တွယ်ရာတွင်အချည်းနှီးဖြစ်သည် ။ ဥပမာအားဖြင့်:
echo strlen($user->email); // အမှားတစ်ခုသတင်းပို့ပါ:strlen() expects parameter 1 to be string, null given
အများဆုံးလွယ်ကူသောနည်းလမ်းမှာ၎င်းတို့ကိုအသုံးမပြုမီဂုဏ်သတ္တိများကိုကိုယ်တိုင်စစ်ဆေးရန်ဖြစ်သည်။
$email = $user->email ?? '';
echo strlen($email);
PHP 7+ တွင်အချည်းနှီးသောပေါင်းစည်းမှုအော်ပရေတာကိုအသုံးပြုခြင်း ။ Null သောအခါပုံမှန်တန်ဖိုးတစ်ခုပေးရန်အဆင်ပြေသည်။
သင် attribute တွေသုံးတဲ့နေရာတိုင်းမှာတရားစီရင်ချက်ထည့်သွင်းခြင်းကိုရှောင်ရှားလိုလျှင်,
<?php
function sanitizeNulls($object) {
foreach ($object as $key => $value) {
if (is_null($value)) {
$object->$key = '';
}
}
return $object;
}
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');
$stmt = $pdo->query('SELECT id, name, email FROM users WHERE id = 1');
$user = $stmt->fetchObject();
$user = sanitizeNulls($user);
echo strlen($user->email); // 现在不会အမှားတစ်ခုသတင်းပို့ပါ了
ဤနည်းလမ်းသည်အခြေအနေများအတွက်သင့်လျော်သည်။
FetchObject သည် အချက်အလက်များကိုလက်ခံရရှိရန်စိတ်ကြိုက်အတန်းကိုသတ်မှတ်ရန်ခွင့်ပြုသည်။ NULL ကို ဆောက်လုပ်သူများသို့မဟုတ်ထုံးစံနည်းလမ်းများမှတဆင့်အလိုအလျောက်လုပ်ဆောင်နိုင်သည်။
<?php
class User {
public $id;
public $name;
public $email;
public function __construct() {
foreach ($this as $key => $value) {
if (is_null($value)) {
$this->$key = '';
}
}
}
}
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');
$stmt = $pdo->query('SELECT id, name, email FROM users WHERE id = 1');
$user = $stmt->fetchObject('User');
echo strlen($user->email); // 也不会အမှားတစ်ခုသတင်းပို့ပါ
မှတ်ချက် ။ ။ ထုံးစံအတန်းများကိုအသုံးပြုသောအခါအရာဝတ်ထုစစ်ဆေးမှုကိုစစ်ဆေးပြီးနောက်သတ်မှတ်ထားသည့် attribute များသည် calluctor မှတဆင့်ဖြတ်သန်းသွားမည်,
PDostatement :: Fetchobject ကို အသုံးပြုသောအခါဒေတာဘေ့စ်တွင် null တန်ဖိုးများကိုကြုံတွေ့ရလေ့ရှိသည်။
အသုံးများသောကုသမှုနည်းလမ်းများမှာ -
attribute တွေသုံးတဲ့အချိန်တိုင်း ဗလာ ချမှတ်မှုတရားစွဲဆိုမှုလုပ်ပါ။
လုပ်ဆောင်ချက်များကို traverse အရာဝတ်ထုများကိုအသုံးချနိုင်သောပုံစံဖြင့် အသုံးပြု. Nulls အားလုံးကိုပုံမှန်တန်ဖိုးများသို့ပြောင်းပါ။
ထုံးစံအတန်းမှတဆင့်ဗဟိုအပြောင်းအလဲနဲ့။
သင်၏အမှန်တကယ်စီမံကိန်းအရွယ်အစားနှင့်ရှုပ်ထွေးမှုပေါ် မူတည်. သင်အကောင်းဆုံးနှင့်သက်ဆိုင်သောဖြေရှင်းချက်ကိုရွေးချယ်ခြင်းသည်သင်၏ code ကိုအားကောင်းစေပြီးထိန်းသိမ်းနိုင်စွမ်းကိုပြုလုပ်နိုင်သည်။
အဆင့်မြင့် PDO အကြောင်းပိုမိုလေ့လာလိုပါက ဤနေရာတွင်အသေးစိတ်သင်ခန်းစာကို သင်ရည်ညွှန်းနိုင်သည်။