PHP, PDO (PHP Data Obserts) တွင်ဒေတာဘေ့စ်များကိုကြည့်ရှုရန်ပေါ့ပါးသောဒေတာဘေ့စ် abstraction အလွှာတစ်ခုဖြစ်သည်။ PDO ကိုအသုံးပြုခြင်းသည် SQL, postgresql, sqlite ကဲ့သို့သောဒေတာဗေ့စ်စနစ်များကိုအလွယ်တကူအကောင်အထည်ဖော်နိုင်ပြီး MySQL, Postgresqlql, sqlite ကဲ့သို့သောဒေ တာဘေ့စ် စနစ်များကိုထောက်ပံ့သည်။ ၎င်းသည် Query ကိုတိုက်ရိုက် PHP အရာဝတ်ထုများအဖြစ်တိုက်ရိုက်မြေပုံများကိုတိုက်ရိုက်ဖော်ပြနိုင်သည်။
PDostatement :: Fetchobject သည်ဒေတာဘေ့စ်စုံစမ်းမှုရလဒ်များမှမှတ်တမ်းများအတန်းကိုယူပြီးအရာဝတ်ထုတစ်ခုသို့၎င်းတို့ကိုမြေပုံများပို့ပေးသည်။ Fetch နည်းလမ်းနှင့်မတူဘဲ FetchOccoboject သည် actirective array သို့မဟုတ် index ခင်းကျင်းမှုမဟုတ်ဘဲအရာဝတ်ထုတစ်ခုမဟုတ်ပါ။ ပုံမှန်အားဖြင့်ပြန်လာသည့်အရာဝတ်ထုသည် stdclass အမျိုးအစားဖြစ်သည်။
ပထမ ဦး စွာဒေတာဘေ့စ ် နှင့်ချိတ်ဆက်ရန်နှင့်စုံစမ်းမှု တစ်ခုသို့ ဆက်သွယ်ရန်အတွက်အခြေခံ PDO ကို သုံးပါ။
<?php
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');
$stmt = $pdo->query('SELECT * FROM users');
while ($row = $stmt->fetchObject()) {
echo $row->name . "\n"; // query table ထဲမှာတ ဦး တည်းရှိပါသည်ဆိုပါစို့ name လယ်ကွင်း
}
?>
ဤဥပမာတွင် $ အတန်းသည် stdclass အရာဝတ်ထုတစ်ခုဖြစ်လိမ့်မည်။
အကယ်. သင်သည် query ရလဒ်များကိုသီးခြားလူတန်းစားအရာဝတ်ထုတစ်ခုသို့မြေပုံဆွဲလိုပါက FetchOccoboject တွင်အတန်း၏အမည်ကိုသင်အောင်မြင်နိုင်သည်။ မေးမြန်းမှုရလဒ်များကိုကိုင်တွယ်ရန်စိတ်ကြိုက်အတန်းကိုမည်သို့အသုံးပြုရမည်နည်း။
<?php
class User {
public $id;
public $name;
public $email;
public function __construct($id, $name, $email) {
$this->id = $id;
$this->name = $name;
$this->email = $email;
}
}
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');
$stmt = $pdo->query('SELECT id, name, email FROM users');
while ($user = $stmt->fetchObject('User')) {
echo "ID: " . $user->id . " Name: " . $user->name . " Email: " . $user->email . "\n";
}
?>
ဤဥပမာတွင် FetchOccject ('user') သည် အသုံးပြုသူ အတန်းအစား၏အရာဝတ်ထုတစ်ခုဖြစ်လာခဲ့သည်။ ဒေတာတစ်ခုစီသည် အသုံးပြုသူ အရာဝတ်ထုတစ်ခုကိုဖန်တီးပေးပြီးအရာဝတ်ထုဂုဏ်သတ္တိများမှတစ်ဆင့်အချက်အလက်များကိုတိုက်ရိုက်ရယူနိုင်သည်။
ပုံမှန်အားဖြင့် FetchObject သည် အရာဝတ်ထု၏ဂုဏ်သတ္တိများကိုသတ်မှတ်ရန်စုံစမ်းမှုရလဒ်ရှိကွင်းဆင်းများကိုတိုက်ရိုက်သုံးလိမ့်မည်။ သင်၏အတန်းတွင်ဆောက်လုပ်ရေးလုပ်ငန်းတစ်ခုရှိပါက PDO သည်ဆောက်လုပ်ရေး parameters များကိုလျစ်လျူရှုထားသည်။ ဤကိစ္စတွင်သင်ဤပြ problem နာကိုဖြေရှင်းရန် PDostatement :: setfetchmode နည်းလမ်းကိုသုံးနိုင်သည်။ ဥပမာအားဖြင့်, သင်သည်အရာဝတ်ထုတစ်ခုကို constructor မှတဆင့်စတင်နိုင်ပါကအောက်ပါနည်းလမ်းကိုသုံးနိုင်သည်။
<?php
class User {
public $id;
public $name;
public $email;
public function __construct($id, $name, $email) {
$this->id = $id;
$this->name = $name;
$this->email = $email;
}
}
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');
$stmt = $pdo->query('SELECT id, name, email FROM users');
$stmt->setFetchMode(PDO::FETCH_CLASS, 'User');
while ($user = $stmt->fetch()) {
echo "ID: " . $user->id . " Name: " . $user->name . " Email: " . $user->email . "\n";
}
?>
PDO :: FETT_CLASS ကို သတ်မှတ်ခြင်းဖြင့်အချက်အလက်များကိုရယူသည့်အခါကျွန်ုပ်တို့သည်အရာဝတ်ထုကိုစတင်ရန် Custom Sunctionor ကိုအသုံးပြုသင့်သည်။
PDostatement :: Fetchobject က ကျွန်ုပ်တို့အားအလွယ်တကူမြေပုံရှာဖွေခြင်းကိုအရာဝတ်ထုတစ်ခုသို့အလွယ်တကူမြေပုံဆွဲနိုင်သည်။
ပုံမှန်အားဖြင့် Fetchockject သည် stdclass အရာဝတ်ထုတစ်ခုကိုပြန်လည်ရယူသည်။
အရာဝတ်ထုကို constructor မှတဆင့် Initialize လုပ်ရန်လိုအပ်ပါက PDO ::Class mode ကိုသတ်မှတ်ရန် setfetchmode နည်းလမ်းကိုသုံးနိုင်သည်။
PDostatement :: FetCoboject နှင့်အတူ, သင်က database query ရလဒ်များကိုပိုမိုအဆင်ပြေစွာကိုင်တွယ်နိုင်ပါတယ်။