လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PDostatement အတွက် data binding ပြ issues နာများကို debugug debug လုပ်နည်း :: FetchObject

PDostatement အတွက် data binding ပြ issues နာများကို debugug debug လုပ်နည်း :: FetchObject

gitbox 2025-05-29

PHP တွင် PDostatement :: Fetchobjection function သည် Query ရလဒ်များမှဒေတာများကိုရယူရန်အသုံးပြုသောအလွန်အသုံးများသော function တစ်ခုဖြစ်သည်။ သို့သော်ဒေတာအနေဖြင့် Binding ဖြစ်စဉ်တွင်တစ်ခါတစ်ရံအရာဝတ်ထုအချက်အလက်များ၏မှားယွင်းမှုမမှန်ကန်ကြောင်းပြ problem နာကိုသင်ကြုံတွေ့ရနိုင်သည်။ ဤဆောင်းပါးသည်သင်၏ ဆောင်းပါးတိုယိုရေးကို အသုံးပြု. သင်ကြုံတွေ့ရမည့်ဒေတာပြ problems နာများကိုဖြေရှင်းနိုင်ရန်ကူညီရန်ကူညီရန်အကြံဥာဏ်များကိုဖြေရှင်းရန်အကြံပြုချက်များကိုပြသပါမည်။

1 ။ PDO ထုတ်ပြန်ချက်များကို parameters တွေကို execute လုပ်ဖို့မှန်ကန်စွာအသုံးပြုပါစေ

ပထမ ဦး စွာ PDostatement :: FetchObject function ကိုအသုံးပြုသောအခါသင် SQL query ကိုမှန်ကန်စွာကွပ်မျက်ခံရပြီးမှန်ကန်သော parameters တွေကိုကွပ်မျက်ခံရသည်။ များသောအားဖြင့်အချက်အလက်များအားမှန်ကန်သောဒေတာအမျိုးအစားသို့မဟုတ်အမှာစာအမှားများကိုမဖြည့်ဘဲ parameterskers များကိုချည်နှောင်သောအခါ data binding ပြ problems နာများဖြစ်ပေါ်နိုင်သည်။

နမူနာကုဒ်:

 <?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'password');
$statement = $pdo->prepare('SELECT id, name, email FROM users WHERE id = :id');
$statement->bindParam(':id', $id, PDO::PARAM_INT);
$id = 1;
$statement->execute();

ဤတွင်ကျွန်ုပ်တို့သည်မှန်ကန်သော parameters တွေကိုချည်နှောင်ထားကြောင်းသေချာအောင်လုပ်ပါ။ ID ကို ကိန်းအမျိုးအစားတစ်ခုအနေဖြင့် ID နှင့် SQL ကြေငြာချက်တွင်သက်ဆိုင်ရာ parameter name လည်းဖြစ်သည် ။ ID ဖြစ်သည်။

2 ။ အရာဝတ်ထုကိုရရန် FetchObject ကိုသုံးပါ

အချက်အလက်များသည်မှန်ကန်သည်ဟုထင်ရသည့်အချက်အချာကျသောအနေဖြင့်ကျွန်ုပ်တို့သည်အရာဝတ်ထုရလဒ်မှအရာဝတ်ထုကိုရယူရန် FetCOBJOST နည်းလမ်းကိုသုံးနိုင်သည်။ FetchoBjectObject သည် query from query frother ကိုပုံမှန်အားဖြင့် stdclass အရာဝတ်ထုသို့မြေပုံဆွဲမည်ဖြစ်သော်လည်း Class Name Parameter သည်ပုံမှန်အားဖြင့်စိတ်ကြိုက်အရာဝတ်ထုအတန်းကိုသတ်မှတ်နိုင်သည်။

နမူနာကုဒ်:

 <?php
$statement = $pdo->prepare('SELECT id, name, email FROM users WHERE id = :id');
$statement->bindParam(':id', $id, PDO::PARAM_INT);
$id = 1;
$statement->execute();

// အသုံးပြုသူအရာဝတ်ထုကိုရယူပါ
$user = $statement->fetchObject('User');
var_dump($user);

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

3 ။ Class Constructor နှင့် attribute တွေ၏ကိုက်ညီမှုကိုစစ်ဆေးပါ

FetchOccoboject ကို သုံးသောအခါဒေတာဘေ့စ်မေးမြန်းမှု၏ကော်လံအမည်သည် Target Class တွင် attribute name နှင့်ကိုက်ညီမှုရှိကြောင်းသေချာအောင်လုပ်ရမည်။

နမူနာကုဒ်:

 class User {
    public $id;
    public $name;
    public $email;

    public function __construct($id, $name, $email) {
        $this->id = $id;
        $this->name = $name;
        $this->email = $email;
    }
}

အထက်ဖော်ပြပါကုဒ်များတွင် သုံးစွဲသူ အတန်းအစား၏ Properties ID , အမည် နှင့် အီးမေးလ် သည် SQL query ၏ကော်လံအမည်နှင့်ကိုက်ညီရမည်။ ကော်လံအမည်များကွဲပြားခြားနားပါကပွဲတစ်ပွဲသေချာစေရန် SQL Queries တွင် alias ကိုသုံးနိုင်သည်။

 SELECT id AS user_id, name AS user_name, email AS user_email FROM users

တစ်ချိန်တည်းမှာပင် အသုံးပြုသူ အတန်းထဲတွင်ဆောက်လုပ်ရေးလုပ်ငန်းသည် parameters များကိုအတိအလင်းဖြတ်ကျော်ရန်မလိုအပ်ပါ။ အကယ်. ဆောက်လုပ်ရေး၏ parameters များသည် default value မရှိပါက PHP သည် Class attribute များကိုအလိုအလျောက်ပြည့်စုံစေရန်ကြိုးစားလိမ့်မည်။

4 ။ အရာဝတ်ထုဂုဏ်သတ္တိများကိုဖြည့်နိုင်မလားစစ်ဆေးပါ

သင်၏အတန်းထဲတွင်ဂုဏ်သတ္တိများကိုပုဂ္ဂလိက (သို့) အကာအကွယ်ပေးခဲ့ပါက Fetchobject သည် ဤဂုဏ်သတ္တိများကိုဖြည့်ဆည်းပေးနိုင်လိမ့်မည်မဟုတ်ပါ, FetchOccoboject ကို စနစ်တကျအလုပ်လုပ်ရန်သင့်အားပြည်သူ့ ( အများပြည်သူ ) အဖြစ်ကြေငြာရန်သေချာစေပါ။

နမူနာကုဒ်:

 class User {
    public $id;
    public $name;
    public $email;

    // attribute ကိုပုဂ္ဂလိကဖြစ်ပါတယ်လျှင်,fetchObject အဲဒါကိုမဖြည့်နိုင်ဘူး
    private $password;

    public function __construct($id, $name, $email) {
        $this->id = $id;
        $this->name = $name;
        $this->email = $email;
    }
}

သင်သည်ပုဂ္ဂလိကဂုဏ်သတ္တိများကိုသုံးရန်လိုပါက __GET () နှင့် __set) ကို အသုံးပြု. ဤသီးသန့်ဂုဏ်သတ္တိများကိုရယူရန်စဉ်းစားပါ။

5 ။ အကြံဥာဏ်များကို debugging: SQL ထုတ်ပြန်ချက်များနှင့်စုံစမ်းမှုရလဒ်များကိုစစ်ဆေးပါ

Fetchobject မှပြန်လာသောအရာဝတ်ထုအချက်အလက်သည် မမှန်ကန် ပါက,

  1. Print SQL ကြေငြာချက် - SQL query syntax သည်မှန်ကန်ပြီးဒေတာများကိုပြန်ပို့ပါ။ နောက်ဆုံးတွင်နောက်ဆုံး SQL query ကိုပုံနှိပ်ရန် ECHO ကို သုံး. VAR_DUMP ($ ကြေငြာချက် - Fetchall ()) ကိုထုတ်လွှင့်ရန် ($ ကြေငြာချက်)) ကိုပြန်ကြည့်ရှုနိုင်သည်။

     $data = $statement->fetchAll(PDO::FETCH_ASSOC);
    var_dump($data);
    
  2. ခညျြနှောငျတန်ဖိုးများကိုစစ်ဆေးပါbindaram သို့မဟုတ် bindvalue သို့လွှဲပြောင်းထားသည့်တန်ဖိုးကိုသေချာအောင်မှန်ကန်ပါစေ။ Var_Dump မှတဆင့်မျှော်မှန်းထားသောတန်ဖိုးနှင့်ကိုက်ညီမှုရှိမရှိကိုသင်စစ်ဆေးနိုင်သည်။

  3. Object Creation-rocks creations ်ဌာန်းသည့်အခါခြွင်းချက်များကိုစစ်ဆေးပါ ။ ချွင်းချက်မချထားပါ။ ဒေတာဘေ့စ်စုံစမ်းမှုတစ်ခုနှင့်ပြ a နာရှိလျှင် ,

6 ။ ထုံးစံအတန်းအစား၏အရာဝတ်ထုကိုပြန်ပို့ဖို့ fetchocbopject ကို သုံးပါ

ဒေတာဘေ့စ်မှရလဒ်များကိုကွန်ကရစ်အတန်းအစားတစ်ခုသို့ရေးဆွဲရန်လိုအပ်ပါက FetchOccoPject သို့သွားရန် Class Name ကိုသတ်မှတ်နိုင်သည်။

 $user = $statement->fetchObject('User');

ဤနည်းအားဖြင့်ရလဒ်သည်ပုံမှန် stdclass ထက် အသုံးပြုသူ အတန်းအစား၏ဥပမာတစ်ခုဖြစ်လိမ့်မည်။

အကျဉ်းချုပ်

PDostatement တွင် Data Binding ပြ issues နာများကို debugging လုပ်ခြင်း SQL ကွပ်မျက်ခြင်း, parameter သည် class ဆောက်လုပ်ရေးနှင့် attribute များနှင့်ကိုက်ညီခြင်းအားဖြင့်ဖြတ်သန်းခြင်းအားဖြင့်မှန်ကန်သောအရာဝတ်ထုဒေတာများကိုရရှိရန်သေချာစေနိုင်သည်။

အကယ်. သင်သည်စည်းနှောင်ထားသောပြ issues နာများကိုသင်တွေ့ရှိပါကကော်လံအမည်သည်အရာဝတ်ထုပိုင်ဆိုင်မှုအမည်နှင့်ကိုက်ညီမှုရှိမရှိစစ်ဆေးပါ, အလားအလာရှိသောပြ problems နာများကိုဖော်ထုတ်ရန် Debug Log ကိုစောင့်ရှောက်ပါ။