PHP အစီအစဉ်များကိုတီထွင်သောအခါဒေတာဘေ့စ်အပြန်အလှန်အကျိုးစီးပွားအတွက် PDO (PHP data ords) ကိုအသုံးပြုခြင်းသည်သာမန်နည်းလမ်းတစ်ခုဖြစ်သည်။ PDostatement :: Fetterall () နည်းလမ်းကိုမကြာခဏဆိုသလိုစုံစမ်းမှုရလဒ်များရရှိရန်အသုံးပြုသည်။ သို့သော်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်တစ်ခါတစ်ရံတွင် programe query querity ရလဒ်များ၏ပြ problem နာကိုကြုံတွေ့ရသည်။ ၎င်းသည်အစီအစဉ်ကိုမျှော်လင့်ထားသည့်အတိုင်းအချက်အလက်အားလုံးကိုမရနိုင်ပါ။ ဤဆောင်းပါးသည် PDostatement :: Fetchall () စုံစမ်းမှုရလဒ်များသည်မပြည့်စုံခြင်းနှင့်အချက်အလက်ဆုံးရှုံးမှုကိုမည်သို့ကာကွယ်နိုင်သနည်း။
Fetchall () သည် PDostatement လူတန်းစားတွင်ပါ 0 င်သည့်နည်းလမ်းတစ်ခုဖြစ်သည်။ ပုံမှန်အားဖြင့်၎င်းသည်အတန်းများအားလုံးပါ 0 င်သည့်အတန်းများပါ 0 င်သည့် array တစ်ခုနှင့်ပြန်လည်ပတ်မှုပုံစံကို Associative Array များ,
$stmt = $pdo->query("SELECT * FROM users");
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
အချို့ဖြစ်ရပ်များတွင် အကန့်အ သတ်ဖြင့်သာကန့်သတ်ထားသည့်အပိုဒ်ကို သုံး. မှတ်တမ်းတင်ထားသောမှတ်တမ်းအရေအတွက်ကိုကန့်သတ်ထားသည်။ ဥပမာအားဖြင့်:
$stmt = $pdo->query("SELECT * FROM users LIMIT 10");
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
ဤကိစ္စတွင် Fetchall () သည် ဒေတာဘေ့စ်တွင်မှတ်တမ်းများပိုမိုများပြားလာသော်လည်းပထမ ဦး ဆုံးဒေတာ 10 ခုကိုသာပြန်လည်ပေးလိမ့်မည်။ သငျသညျအပြည့်အဝဒေတာကိုရချင်လျှင်, သင်က န့်သတ်ချက် ဖယ်ရှားပစ်ရန်သို့မဟုတ်လိုအပ်သလိုညှိရန်လိုအပ်သည်။
အကယ်. စုံစမ်းမှုလုပ်ငန်းစဉ်အတွင်းဒေတာဘေ့စ်ဆက်သွယ်မှုပြတ်တောက်သွားလျှင်သို့မဟုတ်အချိန်ကုန်ခံရလျှင်၎င်းသည်မပြည့်စုံသောစုံစမ်းမှုရလဒ်များဖြစ်ပေါ်စေနိုင်သည်။ ဥပမာအားဖြင့်ကွန်ယက်မတည်ငြိမ်မှုသို့မဟုတ်ဒေတာဘေ့စ်တင်ခြင်းသည်စုံစမ်းမှုတောင်းဆိုမှုများကိုလုံးဝပြန်ပို့ရန်ပျက်ကွက်စေနိုင်သည်။ ဤအချိန်တွင်ဒေတာဘေ့စ်ဆက်သွယ်မှုသည်ပုံမှန်ဖြစ်ပြီးအချိန်ကုန်ချိန်ညှိမှုရှိမရှိစစ်ဆေးနိုင်သည်။ လိုအပ်ပါက connection timeout အတွက်အမှားသည်းခံမှုကိုသင်ထည့်နိုင်သည်။
အထူးကိစ္စရပ်များတွင်စုံစမ်းမှုရလဒ်ရှိအချို့သောနယ်ပယ်များတွင် Null ဖြစ်နိုင်သည်, ၎င်းသည် fetchall () အချက်အလက်များအားမပြည့်စုံပုံရသည်။ query ည့်သည်ဆိုသည့်အခါ null တန်ဖိုးများကိုကိုင်တွယ်ရန် coalesce () သို့မဟုတ် ifnull () ကိုပေါင်းထည့်နိုင်သည် -
$stmt = $pdo->query("SELECT COALESCE(name, 'Unknown') AS name FROM users");
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
စုံစမ်းမှုကြုံတွေ့ရသောအချက်အလက်ပမာဏသည်ကြီးမားလွန်းပြီး Fetchall () သည် PHP မှတ်ဉာဏ်ကိုလျှံယိုယွင်းစေနိုင်သည်။ ဤအရာကိုရှောင်ရှားရန်သင်ဒေတာခြေလှမ်းအားဖြင့်ရလဒ်များကိုလိုင်းဖြင့်ပြုလုပ်ရန် (ဥပမာအားဖြင့်အကန့်အသတ်ဖြင့်) အန်စာတုံးစစ်ဆေးမှုများကို (ဥပမာအားဖြင့် ကန့်သတ်ခြင်း နှင့် offset ) ကို သုံးနိုင်သည်။
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
// လိုင်းအားဖြင့်ဒေတာလိုင်း process
}
တစ်ခါတစ်ရံတွင်အများဆုံးအထုပ်အရွယ်အစား (Max_allowed_packet) သို့မဟုတ်စုံစမ်းမှုအချိန်ကုန်ခြင်းကဲ့သို့သောဒေတာဘေ့စ် configuration parameters များ (quert_tilout) သို့မဟုတ်စုံစမ်းမှုရလဒ်များကိုကန့်သတ်နိုင်သည်။ အကယ်. ဒေတာဘေ့စ်ကိုမလျော်ကန်စွာပြင်ဆင်ထားပါက၎င်းသည်မပြည့်စုံသောစုံစမ်းမှုရလဒ်များကိုလည်းဖြစ်ပေါ်စေနိုင်သည်။
Query Statement ကိုယ်တိုင်ကအချက်အလက်ဆုံးရှုံးမှုကိုဖြစ်ပေါ်စေသည့်မလိုအပ်သောက န့ ် သတ်ချက်များမရှိကြောင်းသေချာစေပါ။ ဒေတာအားလုံးကိုပြန်ပို့ရန်လိုအပ်ပါကစောလွန်းသေးသောအ က န့်အသတ်ကိုမသုံးပါနှင့်။
အထူးသဖြင့်မြင့်မားသောတစ်ပြိုင်နက်တည်းတွင်ဒေတာဘေ့စ်ဆက်သွယ်မှုတည်ငြိမ်ကြောင်းသေချာပါစေ။ connection pools ကိုအသုံးပြုခြင်း, ဆက်သွယ်မှုများကိုဆက်လက်ထားခြင်း, ကျိုးကြောင်းဆီလျော်သောအချိန်ကုန်များကိုချိန်ညှိခြင်းနှင့်အခြားနည်းလမ်းများသတ်မှတ်ခြင်းသည်ဆက်သွယ်မှုပြ problems နာများကြောင့်မပြည့်စုံသောစုံစမ်းမှုရလဒ်များအန္တရာယ်များကိုလျှော့ချနိုင်သည်။
အချက်အလက်များမေးသည့်ပမာဏသည်ကြီးမားပါကမှတ်ဉာဏ်သို့မဟုတ်ကွပ်မျက်မှုအချိန် အတိုင်းအတာ ကြောင့်အနှောင့်အယှက်မဖြစ်စေရန် PHP ၏မှတ်ဉာဏ်ကန့်သတ်ချက် ( Memory_Limit ) နှင့် Execute Time ကိုချိန်ညှိနိုင်သည်။
အသေးစိတ်အချက်အလက်များနှင့်ဒေတာအသစ်ပြောင်းခြင်းများကိုကိုင်တွယ်သည့်အခါဒေတာဘေ့စ်အရောင်းအ 0 ယ်များကိုအသုံးပြုခြင်းသည်ဒေတာဘေ့စ်အရောင်းအ 0 ယ်များကို အသုံးပြု. လုပ်ငန်းလည်ပတ်မှု၏တသမတ်တည်းကိုသေချာစေနိုင်သည်။ အကယ်. စုံစမ်းမှုအချက်အလက်များသည်စားပွဲမျိုးစုံသို့မဟုတ်ရှုပ်ထွေးသောလုပ်ငန်းများပါ 0 င်ပါကစုံစမ်းမှုအတွင်းရှိအချက်အလက်များမပျောက်ပါစေနှင့်။
$pdo->beginTransaction();
try {
// စုံစမ်းမှုများကိုမျိုးစုံလုပ်ဆောင်ပါ
$pdo->commit();
} catch (Exception $e) {
$pdo->rollBack();
throw $e;
}
အလွန်ကြီးမားသောအချက်အလက်ပမာဏနှင့်အတူမေးမြန်းချက်များအတွက်, querying and processing အတွက် Paginate ကိုအသုံးပြုသည်။ Pagination Queries သည်အချက်အလက်များလွန်းသောအချက်အလက်များလွန်းခြင်းဖြင့်မှတ်ဥာဏ်လျှံသို့မဟုတ်အချိန်ကုန်ခြင်းကိုရှောင်ရှားနိုင်သည်။
$limit = 100;
$offset = 0;
$stmt = $pdo->prepare("SELECT * FROM users LIMIT :limit OFFSET :offset");
$stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
while (true) {
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (empty($results)) {
break;
}
// လုပ်ငန်းစဉ်မေးမြန်းချက်ရလဒ်များ
$offset += $limit;
}
စုံစမ်းမှုစံနှုန်းများတွင်ပါ 0 င်သောကော်လံများသည်အထူးသဖြင့်စစ်ဆင်ရေး, ခွဲထုတ်ခြင်း, အညွှန်းကိန်းမပါဘဲမေးမြန်းချက်များသည်စုံစမ်းမှုတွင်စွမ်းရည်မရရှိနိုင်ကြောင်းနှင့်စုံစမ်းမှုတွင်မပြည့်စုံသောအမြတ်အစွန်းများကိုပင် ဦး တည်သွားနိုင်သည်။
အပြောင်းအလဲများရလဒ်များပြုပြင်ပြောင်းလဲရေးရလဒ်များသည်အချက်အလက်သမာဓိရှိမှုကိုသေချာစေရန်ရလဒ်များကိုအမြဲတမ်းစစ်ဆေးပါ။ ဥပမာအားဖြင့်, ပြန်လာသည့်အတန်းအရေအတွက်မှာမျှော်လင့်ချက်များနှင့်ကိုက်ညီမှုရှိမရှိစစ်ဆေးပါ။
PDostatement :: fetostall () စုံစမ်းမှုကိုသုံးသောအခါမပြည့်စုံသောစုံစမ်းမှုရလဒ်များကြောင့်စုံစမ်းမှုကန့်သတ်ချက်များ, မှတ်ဥာဏ်မလုံလောက်ခြင်းများကိုပိုမိုကောင်းမွန်စေရန်,
အထက်ပါနည်းလမ်းများကိုနားလည်သဘောပေါက်ခြင်းနှင့်အသုံးချခြင်းအားဖြင့်ဒေတာဘေ့စ်လုပ်ငန်းများလုပ်ကိုင်ရန် PDO ကိုအသုံးပြုသောအခါဒေတာဆုံးရှုံးမှုအန္တရာယ်ကိုလျှော့ချသင့်ပြီးစုံစမ်းမှုရလဒ်များ၏သမာဓိကိုသေချာစေသင့်သည်။
သက်ဆိုင်သောတက်(ဂ်)များ:
PDOStatement