ဒေတာဘေ့စ်ဖွံ့ဖြိုးတိုးတက်မှုအတွက် PMP ကိုအသုံးပြုသောအခါ PDostatement :: Fetchobjectobject () Fetchobject () သည်အလွန်လက်တွေ့ကျသောနည်းလမ်းဖြစ်သည်။ ၎င်းသည် Query သည်အလွယ်တကူလုပ်ဆောင်ရန်အတွက်အရာဝတ်ထုတစ်ခုသို့ဖြစ်ပေါ်စေနိုင်သည်။ သို့သော်တစ်ခါတစ်ရံကျွန်ုပ်တို့သည် Fetchocbobject () မှားယွင်းသော သို့မဟုတ်အချည်းနှီးသောအရာဝတ်ထုများကိုပြန်လည်ရောက်ရှိသည့်အခြေအနေကိုတစ်ခါတစ်ရံကြုံတွေ့ရသည်။ ဤဆောင်းပါးသည်ဤပြ problem နာ၏ဘုံအကြောင်းများနှင့်သက်ဆိုင်ရာဖြေရှင်းနည်းများကိုအသေးစိတ်လေ့လာလိမ့်မည်။
အကယ်. ကွပ်မျက်ခံရသော SQL ကြေငြာချက် သည် မည်သည့်မှတ်တမ်းနှင့်မကိုက်ညီပါ က , ၎င်းသည်လျစ်လျူရှုရန်အသုံးအများဆုံးနှင့်အလွယ်ကူဆုံးအကြောင်းပြချက်များထဲမှတစ်ခုဖြစ်သည်။
နမူနာကုဒ်:
<?php
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'password');
$stmt = $pdo->query('SELECT * FROM users WHERE id = 999'); // ယူဆချက် ID 999 မတည်ရှိပါဘူး
$obj = $stmt->fetchObject();
if (!$obj) {
echo "ဒေတာမတွေ့ပါ";
}
?>
ဖြေရှင်းချက် -
SQL Query သည်အချက်အလက်များကိုမှန်ကန်စွာပြန်ပို့နိုင်သလားဆိုတာကိုအတည်ပြုရန်ပရိုဂရမ်သို့မှတ်တမ်းများကိုသင်ထည့်နိုင်သည်သို့မဟုတ် query query ကို database client တစ်ခု ( PHPMYADMMMIN ) နှင့်တိုက်ရိုက်စစ်ဆေးနိုင်သည်။
အကယ်. စုံစမ်းမှုကြေငြာချက် သည် syntax အမှားများသို့မဟုတ်ဒေတာဘေ့စ်ခြွင်းချက်များရှိပါ က ,
နမူနာကုဒ်:
<?php
$stmt = $pdo->query('SELECT FROM users'); // ပျက်ပြယ်,SQLအမှား
if ($stmt === false) {
echo "SQLExecution မအောင်မြင်ပါ";
}
?>
ဖြေရှင်းချက် -
Query () သို့မဟုတ် ပြင်ဆင်ခြင်း () သို့မဟုတ်ပြင်ဆင်ပါ () နှင့် PDO :: အမှားအယွင်းများ ကိုအသုံးပြုပါ။
အကယ်. စုံစမ်းမှု၏ကော်လံအမည်ကိုမှားယွင်းစွာရေးသားထားပါကပုံမှန်အားဖြင့်ပုံမှန်အားဖြင့် execute လုပ်နိုင်သော်လည်း, ပြန်လည်ရယူထားသောအချက်အလက်များသည်မမှန်ကန်ပါ ။
နမူနာကုဒ်:
<?php
$stmt = $pdo->query('SELECT id, username FROM users');
$obj = $stmt->fetchObject();
echo $obj->email; // မှတ်သား:email字段မတည်ရှိပါဘူး
?>
ဖြေရှင်းချက် -
စုံစမ်းမှုကြေငြာချက်တွင်သင်လိုအပ်သောနယ်ပယ်အားလုံးပါ 0 င်ကြောင်းနှင့်လယ်ကွင်းအမည်များမှန်ကန်ကြောင်းသေချာအောင်လုပ်ပါ။
Fetchobject () ပုံမှန်အားဖြင့် stdclass အရာဝတ်ထုသို့ Row ဒေတာများကိုမြေပုံများပို့ပေးပါ။ အကယ်. သင်၏ကုဒ်သို့မဟုတ်ယုတ္တိဗေဒသည်တိကျသောလူတန်းစားမြေပုံတစ်ခုလိုအပ်ပါကအတန်းအမည်ကိုသတ်မှတ်ရန်မေ့နေပါကပြန်လည်ရယူထားသောအရာဝတ်ထုသည်အသုံးမပြုနိုင်ပါ။
နမူနာကုဒ်:
<?php
class User {
public $id;
public $username;
}
$stmt = $pdo->query('SELECT id, username FROM users');
$obj = $stmt->fetchObject('User');
?>
အသုံးပြုသူ အတန်းအစားမရှိပါသို့မဟုတ်ဆောက်လုပ်ရေးတွင်ရှုပ်ထွေးသော parameter လိုအပ်ချက်များရှိပါက FetchOccokject () သည် ကျရှုံးနိုင်သည်။
ဖြေရှင်းချက် -
သတ်မှတ်ထားသောလူတန်းစားတည်ရှိသေချာပါစေ။
အကယ်. အတန်းတွင်ဆောက်လုပ်ရေး parameters တွေကိုပါက parameter ကို array ကို fetchjectobject သို့ဖြတ်သန်းနိုင်သည်။
အတန်း၏ဆောက်လုပ်ရေးကိုတတ်နိုင်သမျှရိုးရှင်းအောင်ထားပါ,
FetterObjectobject () ကိုခေါ်သည့်အခါတိုင်း, အတွင်းပိုင်းညွှန်ကြားချက်တစ်ခုသည်လိုင်းတစ်ခုသို့တစ်လိုင်းကိုရှေ့သို့ရွှေ့လိမ့်မည်။ သင်မတော်တဆခေါ်ဆိုမှုကိုအကြိမ်ကြိမ်ခေါ်ဆိုပါကဒုတိယအကြိမ်ပြီးနောက်အလွတ်ပြန်လာနိုင်သည်။
နမူနာကုဒ်:
<?php
$obj1 = $stmt->fetchObject();
$obj2 = $stmt->fetchObject(); // ဒေတာတစ်တန်းသာရှိလျှင်,ဒါ false
?>
ဖြေရှင်းချက် -
ဒေတာအမျိုးမျိုးကိုအမျိုးအစားများ process လုပ်ရန်ကွင်းများကိုသုံးပါ။
၎င်းကိုတစ်ကြိမ်ခေါ်ဆိုပြီးနောက်မတော်တဆမခေါ်ပါနှင့်။
မေးမြန်းခြင်းမပြုမီ SQL သည်မှန်ကန်ပြီးလယ်ကွင်းအမည်သည်တိကျမှန်ကန်ကြောင်းသေချာအောင်လုပ်ပါ။
စုံစမ်းမှုအပြီးတွင်, $ stmt သည် မှားသည် ကိုစစ်ဆေးပါ။
FetchOccoboject () ကိုခေါ်ပြီးနောက်, ပြန်လာတန်ဖိုးသည် မှားသည် ကိုဆုံးဖြတ်ပါ။
သင်စိတ်ကြိုက်အတန်းတစ်ခုသို့မြေပုံဆွဲလိုပါကအတန်းဖွဲ့စည်းပုံသည်လိုအပ်ချက်များကိုဖြည့်ဆည်းပေးနိုင်ရန်သေချာစေပါ။
Multi-Row ဒေတာများကို ($ obj = $ stmt-> fetchobject ()) ကွင်းဆက်ကို သုံး. အသုံးပြုသည်။
အထက်ပါစစ်ဆေးရေးအဆင့်များမှတဆင့်မျက်မမြင်စုံစမ်းစစ်ဆေးမှုကြောင့်အချည်းနှီးသောအချိန် ကို အဘယ်ကြောင့်ပြန်လာရသည့်အကြောင်းရင်းကိုအလျင်အမြန်ရှာဖွေနိုင်သည်။