လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PDostatement :: Fetchobject ကိုအသုံးပြုသောအခါ datstates ကို datstase များတွင် NULL တန်ဖိုးများကိုမည်သို့ကိုင်တွယ်ရမည်နည်း

PDostatement :: Fetchobject ကိုအသုံးပြုသောအခါ datstates ကို datstase များတွင် NULL တန်ဖိုးများကိုမည်သို့ကိုင်တွယ်ရမည်နည်း

gitbox 2025-05-12

PHP ၏ PDO (PHP Data Obserts) ကိုဒေတာဘေ့စ်လုပ်ငန်းများအတွက်အသုံးပြုသည့်အခါ PDostatement :: Fetchobjection သည်ရလဒ်ကိုအရာဝတ်ထုတစ်ခုသို့တိုက်ရိုက်မြေပုံဆွဲရန်အလွန်အဆင်ပြေသောနည်းလမ်းဖြစ်သည်။ သို့သော်အမှန်တကယ်အသုံးပြုမှုတွင်ကျွန်ုပ်တို့သည်ဒေတာဘေ့စ်တွင် Null တန်ဖိုးများတည်ရှိရာအခြေအနေများနှင့်မကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ အကယ်. unprocessed မှထွက်ခွာသွားပါကဤ null valuses များသည်စီးပွားရေးဆိုင်ရာယုတ္တိဗေဒဆိုင်ရာခြွင်းချက်များသို့မဟုတ်မမျှော်လင့်သောအမှားများကိုပစ်ချနိုင်သည်။

ဤဆောင်းပါးသည် ဒေတာဗစ်ဖ် အသုံးပြုသောအခါဒေတာဗူးကိုအသုံးပြုသည့်အခါဒေတာဗေ့စ်တွင် တရားမျှတသော တန်ဖိုးများကိုမည်သို့မှန်ကန်စွာကိုင်တွယ်နိုင်မည်ကိုအသေးစိတ်ရှင်းပြပါလိမ့်မည်။

FetchObject ၏အခြေခံအသုံးပြုမှု

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 ဖြစ်လိမ့်မည်။

ပြ the နာကိုဖြစ်ပေါ်လာသည်

ပုံမှန်အားဖြင့် PHP သည် Null ကိုင်တွယ်ရာတွင်အချည်းနှီးဖြစ်သည် ဥပမာအားဖြင့်:

 echo strlen($user->email); // အမှားတစ်ခုသတင်းပို့ပါ:strlen() expects parameter 1 to be string, null given

ဖြေရှင်းချက် 1: လက်စွဲစာရင်းထောက်လှမ်းခြင်းနှင့်အစားထိုး

အများဆုံးလွယ်ကူသောနည်းလမ်းမှာ၎င်းတို့ကိုအသုံးမပြုမီဂုဏ်သတ္တိများကိုကိုယ်တိုင်စစ်ဆေးရန်ဖြစ်သည်။

 $email = $user->email ?? '';
echo strlen($email);

PHP 7+ တွင်အချည်းနှီးသောပေါင်းစည်းမှုအော်ပရေတာကိုအသုံးပြုခြင်း Null သောအခါပုံမှန်တန်ဖိုးတစ်ခုပေးရန်အဆင်ပြေသည်။

ဖြေရှင်းချက် 2 - Post-processing

သင် 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); // 现在不会အမှားတစ်ခုသတင်းပို့ပါ了

ဤနည်းလမ်းသည်အခြေအနေများအတွက်သင့်လျော်သည်။

ဖြေရှင်းချက် 3: စိတ်ကြိုက်မြေပုံအတန်း

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 အကြောင်းပိုမိုလေ့လာလိုပါက ဤနေရာတွင်အသေးစိတ်သင်ခန်းစာကို သင်ရည်ညွှန်းနိုင်သည်။