လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Fetch_ သို့ခေါ်ဆိုမှုများစွာသည်ရလဒ်ကို "အစာစားခြင်း" ဖြစ်စေသည်။

Fetch_ သို့ခေါ်ဆိုမှုများစွာသည်ရလဒ်ကို "အစာစားခြင်း" ဖြစ်စေသည်။

M66 2025-05-18

MySQL database ကိုသုံးသောအခါ MySQLI_RESELT ကိုအသုံးပြုသောအခါအသုံးဝင်သောအတန်းအစားသည်စုံစမ်းမှုရလဒ်များကို encapsultultularment တစ်ခုဖြစ်ပြီး developer များက developer များကို developer များအားအချက်အလက်များကိုထုတ်ယူရန်ခွင့်ပြုသည် သို့သော် developer များစွာသည် နည်းလမ်းများကိုအသုံးပြုသောအခါပြ a နာတစ်ခုနှင့်ကြုံတွေ့ရသည်။ ဘာတွေဖြစ်နေတာလဲ? နက်ရှိုင်းတဲ့ကြည့်ကြည့်ရအောင်။

1 ။ mysqli_result ၏အခြေခံအယူအဆ

MySQL query ကိုကွပ်မျက်ခံရပြီးနောက်ပြန်လာသည့်ရလဒ်ကို MySQLI_RESult Object သို့ encapsulated ဖြစ်သည်။ PHP တွင်ဒေတာလိုင်းကိုမတူညီသော fetch_ * နည်းလမ်းများဟုခေါ်ဆိုခြင်းဖြင့်မျဉ်းကြောင်းဖြင့်ဖတ်ရှုနိုင်သည်။

  • FETT_AST_AsSOC () - Associative Array တွင်ရလဒ်အတန်းကိုပြန်လည်ရောက်ရှိစေသည်။

  • FETCH_ROW () : ရလဒ်ကို indexing indexing လမ်းအတွက်ရလဒ်ကိုပြန်ပို့။

  • fech_object () - ရလဒ်အတန်းကိုအရာဝတ်ထုတစ်ခုအဖြစ်ပြန်ပို့သည်။

ဥပမာအားဖြင့်:

 $conn = new mysqli("localhost", "user", "password", "database");
$query = "SELECT * FROM users";
$result = $conn->query($query);

ယခုအချိန်တွင် $ ရလဒ် အနေဖြင့် MySQLI_RESult ဖြစ်သည်။ ၎င်းသည်အထက်ဖော်ပြပါ fetch_ * နည်းလမ်းကိုခေါ်ဆိုရန်အသုံးပြုနိုင်သည်။

2 ။ အဘယ်ကြောင့်တောင်းဆိုမှုများကို ရယူရန် တောင်းဆိုမှုများကိုအဘယ်ကြောင့် "ပျောက်ကွယ်သွားခြင်း" ကိုဖြစ်ပေါ်စေသနည်း။

mysqli_result အရာဝတ်ထုသည် fetch_ * နည်းလမ်းကိုခေါ်ဆိုသောအခါ၎င်းသည်ဒေတာလိုင်းကိုလိုင်းအားဖြင့်ဖတ်သည်။ သင် Fetch_ * method ကိုခေါ်သည့်အခါရလဒ်ကို Pointer သည်ရှေ့သို့တိုးလာလိမ့်မည်။ ဆိုလိုသည်မှာ fetch_ * ဟုခေါ်သောအချိန်တိုင်းဒေတာအတန်းများကိုစားသုံးပြီး pointer ၏အနေအထားကိုအသစ်ပြောင်းသည်။ အကယ်. သင် Fetch_ * နည်းလမ်းကိုအကြိမ်ပေါင်းများစွာခေါ်ဆိုပါကဖတ်ရန်အချက်အလက်များမရှိတော့သည်အထိမျဉ်းကြောင်းဖြင့်လိုင်းဖတ်ပါလိမ့်မည်။

ဥပမာအားဖြင့်:

 while ($row = $result->fetch_assoc()) {
    // အချက်အလက်များကိုထုတ်ယူခြင်း
}

while ($row = $result->fetch_assoc()) {
    // အဘယ်သူမျှမဒေတာကိုဒီမှာရရှိသည်,ဘာဖြစ်လို့လဲဆိုတော့ယခင်စုံစမ်းမှုသည်ရလဒ်ကိုလုံးဝလောင်ကျွမ်းသွားပြီဖြစ်သည်
}

အပေါ်ကပြထားတဲ့အတိုင်း Loop က အချက်အလက်အားလုံးကိုဖတ်ပြီးရလဒ်တစ်ခုလုံးကိုစားသုံးတယ်။ Loop သည်အချက်အလက်များကိုထပ်မံရယူရန်ကြိုးစား စဉ် ရလဒ်ကို "စားသုံး" နေပြီးဒေတာကိုမရနိုင်ပါ။

3 ။ ဒီအခြေအနေကိုဘယ်လိုရှောင်ရမလဲ။

ဤအရာကိုရှောင်ရှားရန်အောက်ပါနည်းလမ်းများကိုကျွန်ုပ်တို့ယူနိုင်သည်။

3.1 MySQLI_DATA_SEEK () နည်းလမ်းကိုသုံးပါ

ရလဒ်ကိုပြန်လည်ထူထောင်ရန်လိုအပ်ပါက MySQLI_DATA_DA_SE_SEEK () method ကိုသုံးနိုင်သည်။ ဥပမာအားဖြင့်:

 $result = $conn->query("SELECT * FROM users");

while ($row = $result->fetch_assoc()) {
    // ပထမ ဦး ဆုံးအကြိမ်ဒေတာကိုဖတ်ပါ
}

// Reset ရလဒ် set painter
$result->data_seek(0);

while ($row = $result->fetch_assoc()) {
    // ဒုတိယအကြိမ်ဒေတာကိုဖတ်ပါ
}

Data_seek (0) ခေါ်ဆိုခြင်းဖြင့်ဒေတာညွှန်ပြမှုကိုပြန်လည်စတင်နိုင်ပြီးရလဒ်အစတွင်ဒေတာကိုပြန်ဖတ်ရှုနိုင်သည်။

3.2 MySQLI_FETCE_ALL () နည်းလမ်းကိုအသုံးပြုခြင်း

အချက်အလက်အားလုံးကိုတစ်ချိန်တည်းတွင်သင်ရလိုပါကအချက်အလက်အားလုံးကိုတစ်ပြိုင်နက်တည်းခင်းကျင်းခြင်းမပြုဘဲ စာမဖတ်ဘဲတစ်ပြိုင်တည်းခင်းကျင်းခြင်းမရှိဘဲ၎င်းကိုတစ်ပြိုင်တည်းခင်းကျင်းစေမည့် MySQLI_FETCHT_ALL () နည်းလမ်းကိုသုံးနိုင်သည်။ ဥပမာအားဖြင့်:

 $result = $conn->query("SELECT * FROM users");
$rows = $result->fetch_all(MYSQLI_ASSOC);

// သင်ကအကြိမ်ပေါင်းများစွာသုံးနိုင်သည် $rows Array အတွက်ဒေတာ
foreach ($rows as $row) {
    // အချက်အလက်များကိုထုတ်ယူခြင်း
}

ဤချဉ်းကပ်မှုသည်ရလဒ်အနေဖြင့်လိုင်းကိုလိုင်းဖတ်ပြီးရလဒ်များကိုအသုံးပြုသောအခြေအနေကိုရှောင်ရှားနိုင်ပြီးရလဒ်ကိုနေရာများစွာတွင်အသုံးပြုရန်ခွင့်ပြုသည်။

3.3 စတိုးဆိုင်မေးမြန်းမှုသည်မှတ်ဉာဏ်ရလဒ်များ

သင်၏ရှာဖွေမှုရလဒ်များသည်သေးငယ်သော်လည်းအချက်အလက်များကို array တစ်ခုတွင်သိမ်းဆည်းထားပြီးအချက်အလက်များကိုခင်းကျင်းစွာထည့်သွင်းစဉ်းစားနိုင်သည်။ ဥပမာအားဖြင့်:

 $result = $conn->query("SELECT * FROM users");
$data = [];

while ($row = $result->fetch_assoc()) {
    $data[] = $row;
}

// သင်ကအကြိမ်ပေါင်းများစွာသုံးနိုင်သည် $data အခင်းအကျင်း
foreach ($data as $row) {
    // အချက်အလက်များကိုထုတ်ယူခြင်း
}

ဤနည်းလမ်းသည်ဒေတာဘေ့စ်၏ထပ်ခါတလဲလဲမေးမြန်းခြင်းကိုလည်းရှောင်ရှားနိုင်ပြီးရလဒ်ကို "စားသော" ဖြစ်သည့်ပြ the နာကိုလည်းရှောင်ရှားသည်။

4 ။ အကျဉ်းချုပ်

သင် Fetch_ * နည်းလမ်းကိုအကြိမ်ပေါင်းများစွာခေါ်ဆိုသောအခါရလဒ်ကိုမျဉ်းကြောင်းဖြင့်မျဉ်းကြောင်းနှင့်စားသုံးသည်။ အကယ်. သင်သည်ရလဒ်ကိုဖြတ်သန်းလိုပါက MySQLI_DA_DA_DATA_SEEK () ကို ပြန်လည်သတ်မှတ်ရန် () ရလဒ်ကိုပြန်လည်သတ်မှတ်ခြင်းသို့မဟုတ် MySQLI_Fetch_All () ကိုသုံးရန်သို့မဟုတ် MySQLI_Fetch_All () ကို သုံးရန်သို့မဟုတ် MySQLI_Fetch_All ကို အသုံးပြု. MySQLI_DA_FETCE_ALL () ကိုအသုံးပြုသည်။ ဤနည်းလမ်းများမှတစ်ဆင့်ဖွံ့ဖြိုးရေးကာလအတွင်းကြုံတွေ့ရစဉ် "ရလဒ်အနေဖြင့်စားသုံး" ပြ problems နာများကိုရှောင်ရှားနိုင်ပြီးဒေတာများကိုမှန်ကန်စွာဖတ်ရန်သေချာစေနိုင်သည်။