PHP တွင် PDO (PHP Data Obserts) တွင်ဒေတာဘေ့စ်ဆက်သွယ်မှုများနှင့်စစ်ဆင်ရေးအတွက် abstraction အလွှာတစ်ခုဖြစ်သည်။ PDostatement :: Fetterobject: query ရလဒ်ကိုအရာဝတ်ထုအဖြစ်ပြန်လည်ပေးပို့နိုင်သည့် PDO မှပေးသော PDO မှပေးသောနည်းလမ်းဖြစ်သည်။ အထူးသဖြင့်ရှု ထောင် ခင်းကျင်းရေးရာအချက်အလက်များကိုကျွန်ုပ်တို့ရရှိရန်လိုအပ်သည့်အချက်အလက်များကိုထပ်မံပြုပြင်ခြင်းနှင့်လည်ပတ်မှုအတွက်ဤနည်းလမ်းသည်အလွန်အဆင်ပြေသည်။
ဤဆောင်းပါးတွင် PDostatement :: FetCoboPJOCTOCTOCTOCT ကိုအသုံးပြုနည်း :: FetCoboPject ကို သုံးရန်ရှာဖွေခြင်းနှင့်လုပ်ငန်းစုံစမ်းရေးရှာဖွေခြင်း၏ထိရောက်မှုကိုတိုးတက်စေရန်ကူညီပေးပါမည်။
ပထမ ဦး စွာ pidostatement ၏အခြေခံအသုံးပြုမှု :: FetCOBJOCTOCTOCT ၏အခြေခံအသုံးပြုမှုကိုကြည့်ကြပါစို့။ ကျနော်တို့ PDO ဥပမာကိုဖန်တီးပြီး query sql ကြေညာချက်ကိုကွပ်မျက်ခံခဲ့ကြပါစို့
<?php
// ဖန်တီး PDO နမူနာ
$pdo = new PDO("mysql:host=localhost;dbname=testdb", "username", "password");
// ကရိယာတန်းဆာ SQL မေးမြန်း
$stmt = $pdo->query("SELECT * FROM users");
// 获取မေးမြန်း结果,အရာဝတ်ထုကိုပြန်ပို့သည်
$user = $stmt->fetchObject();
echo $user->name; // output အသုံးပြုသူအမည်
?>
အထက်ပါကုဒ်များတွင် FetchObject နည်းလမ်းသည်စုံစမ်းမှုရလဒ်ပထမ ဦး ဆုံးကိုအရာဝတ်ထုတစ်ခုအဖြစ်ပြောင်းလဲခြင်းနှင့်ပြန်လည်ရောက်ရှိလာခြင်းဖြစ်သည်။ ကော်လံတစ်ခုစီ၏အချက်အလက်များသည်အရာဝတ်ထုတစ်ခု၏ attribute တစ်ခုအဖြစ်ပေါ်လာလိမ့်မည်။
အကယ်. စုံစမ်းမှုရလဒ်သည်အချက်အလက်များစွာပါ 0 င်ပါကကျွန်ုပ်တို့သည်ပထမအတန်းမဟုတ်ဘဲမှတ်တမ်းများအားလုံးကိုရရန်လိုအပ်သည်။ ဤကိစ္စတွင်ကျွန်ုပ်တို့သည်၎င်းကို fetterobject နှင့် fetchall နည်းလမ်းများနှင့်ပေါင်းစပ်။ လုပ်နိုင်သည်။
<?php
// ကရိယာတန်းဆာ SQL မေးမြန်း
$stmt = $pdo->query("SELECT * FROM users");
// ဒေတာအားလုံးကိုရယူပါ,အရာဝတ်ထုတစ်ခုခင်းကျင်းပြန်လာပါ
$users = $stmt->fetchAll(PDO::FETCH_OBJ);
// အသုံးပြုသူအားလုံး၏အမည်များကိုကျော်ပြီးထုတ်ယူပါ
foreach ($users as $user) {
echo $user->name . "<br>";
}
?>
ဤဥပမာတွင် Fetterall (PDO :: Fetdo_obj) သည် query ရလဒ်အားလုံးကိုပြန်ပို့ပြီးဒေတာတစ်ခုစီကိုအရာဝတ်ထုတစ်ခုစီသို့ပြောင်းလဲပြီး array တစ်ခုတွင်သိုလှောင်ထားသည်။ ထို့နောက်ကျွန်ုပ်တို့သည်ဤခင်းကျင်းမှုကိုဤမျှရှိခြင်းဖြင့်ကြားနာခြင်းနှင့်အရာဝတ်ထုတစ်ခုစီ၏ဂုဏ်သတ္တိများကိုရယူနိုင်သည်။
တခါတရံတွင်ရိုးရှင်းသောအရာဝတ်ထုများကိုရိုးရှင်းသောခင်းကျင်းမှုသည်ကျွန်ုပ်တို့၏လိုအပ်ချက်များကိုဖြည့်ဆည်းရန်မလုံလောက်နိုင်ပါ။ ၎င်းကိုအောင်မြင်ရန် PDostatement :: FetCobobject နှင့် PHP ခင်းပစ်ဆာချောင်းညှိခြင်းများပြုလုပ်နိုင်သည်။
အသုံးပြုသူများ ဇယားနှင့် အမှာစာများအကြားတစ် ဦး နှင့်အမိန့်များ အကြားတစ် ဦး မှများစွာသောဆက်ဆံရေးရှိသည့်အောက်ပါဇယားကွက်များရှိသည့်အောက်ပါဇယားကွက်ကိုကျွန်ုပ်တို့ပိုင်ဆိုင်ထားပါသည်ဆိုပါစို့။
-- အသုံးပြုသူစားပွဲတင်
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(255)
);
-- အမိန့်ဇယား
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
order_number VARCHAR(255),
amount DECIMAL(10, 2)
);
အသုံးပြုသူတစ် ဦး ချင်းစီ၏အချက်အလက်များနှင့်၎င်းတို့၏အမှာစာများအားလုံးကိုရှုထောင့်အမျိုးမျိုးကိုထုတ်လုပ်ရန်ကျွန်ုပ်တို့မေးမြန်းလိုပါသည်။ ဤကိစ္စတွင် FetchObject သည် သုံးစွဲသူနှင့် 4 င်း၏သက်ဆိုင်ရာအမိန့်ဒေတာလိုင်းတစ်ခုစီကိုလိုင်းဖြင့်ပြုလုပ်ရန်နှင့်တစ်ရှုထောင်ခင်းကျင်းဖွဲ့စည်းပုံတစ်ခုသို့စုစည်းရန်ကူညီနိုင်သည်။
<?php
// မေးမြန်း用户及其订单
$stmt = $pdo->query("
SELECT users.id AS user_id, users.name AS user_name, orders.order_number, orders.amount
FROM users
LEFT JOIN orders ON users.id = orders.user_id
");
// ရလဒ်သိုလှောင်မှုခင်းကျင်း
$usersOrders = [];
// 遍历မေးမြန်း结果并构建多维数组
while ($user = $stmt->fetchObject()) {
// အသုံးပြုသူသည်ခင်းကျင်းမှုတွင်မပေါ်ပါက,အသုံးပြုသူကိုစတင်ပါ
if (!isset($usersOrders[$user->user_id])) {
$usersOrders[$user->user_id] = [
'user_name' => $user->user_name,
'orders' => []
];
}
// အသုံးပြုသူများအတွက်အမှာစာများထည့်ပါ
$usersOrders[$user->user_id]['orders'][] = [
'order_number' => $user->order_number,
'amount' => $user->amount
];
}
// multipi- ရှုထောင်ခင်းကျင်း
echo "<pre>";
print_r($usersOrders);
echo "</pre>";
?>
ဤဥပမာတွင်အသုံးပြုသူတစ် ဦး ချင်းစီအတွက်အချက်အလက်များကို ဦး စွာမေးမြန်းသည်။ ထို့နောက်အတန်းတစ်ခုစီ၏အချက်အလက်များကို Fetchocobject မှတစ်ဆင့် ရယူ. ၎င်းကိုတဖြည်းဖြည်းရှုထောင့်အမျိုးမျိုးကိုစုစည်းထားသည်။ နောက်ဆုံးတွင် $ userorderers array ၏ဖွဲ့စည်းပုံသည်အကြမ်းအားဖြင့်အောက်ပါအတိုင်းဖြစ်သည် -
Array
(
[1] => Array
(
[user_name] => John Doe
[orders] => Array
(
[0] => Array
(
[order_number] => A123
[amount] => 100.00
)
[1] => Array
(
[order_number] => B456
[amount] => 150.00
)
)
)
[2] => Array
(
[user_name] => Jane Smith
[orders] => Array
(
[0] => Array
(
[order_number] => C789
[amount] => 200.00
)
)
)
)
ဤချဉ်းကပ်နည်းသည်တစ် ဦး မှများစွာသောဆက်ဆံရေးနှင့်ဆင်တူသည့်အချက်အလက်များနှင့်ဆင်တူသောအချက်အလက်များနှင့်၎င်းတို့၏အမှာစာများနှင့်၎င်းတို့၏အမှာစာများအားလုံးကိုအဆင်ပြေစွာလက်လှမ်းမီနိုင်သောရှုထောင့်အမျိုးမျိုးသို့ထည့်သွင်းထားသောအချက်အလက်များအတွက်လုပ်ဆောင်ရန်အတွက်အကောင်းဆုံးဖြစ်သည်။
ဒေတာများကိုထပ်မံထည့်သွင်းရန်နှင့်စီးပွားရေးဆိုင်ရာယုတ္တိဗေဒကိုပိုမိုထည့်သွင်းရန်လိုအပ်ပါကကျွန်ုပ်တို့သည်မေးမြန်းမှုရလဒ်များကိုစိတ်ကြိုက်အတန်းအစား၏ဖြစ်ရပ်မှန်များကိုမြေပုံဆွဲနိုင်သည်။ ဥပမာအားဖြင့်ကျွန်ုပ်တို့တွင် အသုံးပြုသူ အတန်းအစားနှင့် အမိန့် အတန်းရှိသည်ဆိုပါစို့။
<?php
// အသုံးပြုသူအမျိုးအစား
class User {
public $id;
public $name;
public $orders = [];
public function __construct($id, $name) {
$this->id = $id;
$this->name = $name;
}
}
// အမိန့်အမျိုးအစား
class Order {
public $order_number;
public $amount;
public function __construct($order_number, $amount) {
$this->order_number = $order_number;
$this->amount = $amount;
}
}
// မေးမြန်း数据
$stmt = $pdo->query("
SELECT users.id AS user_id, users.name AS user_name, orders.order_number, orders.amount
FROM users
LEFT JOIN orders ON users.id = orders.user_id
");
$users = [];
// အသုံးပြုသူနှင့်အမိန့်အရာဝတ်ထုကိုတည်ဆောက်ပါ
while ($user = $stmt->fetchObject()) {
if (!isset($users[$user->user_id])) {
$users[$user->user_id] = new User($user->user_id, $user->user_name);
}
$users[$user->user_id]->orders[] = new Order($user->order_number, $user->amount);
}
// output ကိုအရာဝတ်ထုဖွဲ့စည်းပုံ
echo "<pre>";
print_r($users);
echo "</pre>";
?>
ဤနည်းအားဖြင့်စုံစမ်းမှုရလဒ်များသည်နောက်ဆက်တွဲယုတ္တိစစ်ဆင်ရေးများကိုလွယ်ကူချောမွေ့စေသည့် အသုံးပြုသူ နှင့် အမိန့် အတန်းအစား၏အရာဝတ်ထုများကိုဆက်စပ်လိမ့်မည်။
PDostatement :: FetchObject Method ကိုမှတစ်ဆင့်ကျွန်ုပ်တို့သည်မေးမြန်းမှုရလဒ်များကိုရှာဖွေခြင်းရလဒ်များကိုရယူနိုင်ရန်နှင့်အရာဝတ်ထုများကိုအရာ 0 တ်ထုများ, ၎င်းသည်ရိုးရှင်းသောအရာဝတ်ထု တစ်ခု သို့မဟုတ်ပိုမိုရှုပ်ထွေးသောအမျိုးမျိုးသောရှုထောင့်အမျိုးမျိုးတည်ဆောက်ပုံ, ကွဲပြားခြားနားသောအခြေအနေများနှင့်ပေါင်းစပ်ထားသောလက်တွေ့ကျသောအပလီကေးရှင်းများနှင့်ပေါင်းစပ်ပြီး, ဒေတာ encapsulations စသဖြင့်ဒေတာဖွဲ့စည်းပုံကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်။
ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းစဉ်အတွင်း FetchocboPJOCTOCTOCTOCTOCTOCT ၏ကျွမ်းကျင်မှုများကိုပိုမိုကောင်းမွန်စေရန်နှင့်အချက်အလက်များကိုလုပ်ဆောင်ရန်သင်၏စွမ်းရည်ကိုတိုးတက်ကောင်းမွန်စေရန်ဤဆောင်းပါးသည်သင့်အားကူညီနိုင်လိမ့်မည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။