MySQL database ကိုသုံးသောအခါ MySQLI_RESELT ကိုအသုံးပြုသောအခါအသုံးဝင်သောအတန်းအစားသည်စုံစမ်းမှုရလဒ်များကို encapsultultularment တစ်ခုဖြစ်ပြီး developer များက developer များကို developer များအားအချက်အလက်များကိုထုတ်ယူရန်ခွင့်ပြုသည် ။ သို့သော် developer များစွာသည် ဤ နည်းလမ်းများကိုအသုံးပြုသောအခါပြ a နာတစ်ခုနှင့်ကြုံတွေ့ရသည်။ ဘာတွေဖြစ်နေတာလဲ? နက်ရှိုင်းတဲ့ကြည့်ကြည့်ရအောင်။
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_ * နည်းလမ်းကိုခေါ်ဆိုရန်အသုံးပြုနိုင်သည်။
mysqli_result အရာဝတ်ထုသည် fetch_ * နည်းလမ်းကိုခေါ်ဆိုသောအခါ၎င်းသည်ဒေတာလိုင်းကိုလိုင်းအားဖြင့်ဖတ်သည်။ သင် Fetch_ * method ကိုခေါ်သည့်အခါရလဒ်ကို Pointer သည်ရှေ့သို့တိုးလာလိမ့်မည်။ ဆိုလိုသည်မှာ fetch_ * ဟုခေါ်သောအချိန်တိုင်းဒေတာအတန်းများကိုစားသုံးပြီး pointer ၏အနေအထားကိုအသစ်ပြောင်းသည်။ အကယ်. သင် Fetch_ * နည်းလမ်းကိုအကြိမ်ပေါင်းများစွာခေါ်ဆိုပါကဖတ်ရန်အချက်အလက်များမရှိတော့သည်အထိမျဉ်းကြောင်းဖြင့်လိုင်းဖတ်ပါလိမ့်မည်။
ဥပမာအားဖြင့်:
while ($row = $result->fetch_assoc()) {
// အချက်အလက်များကိုထုတ်ယူခြင်း
}
while ($row = $result->fetch_assoc()) {
// အဘယ်သူမျှမဒေတာကိုဒီမှာရရှိသည်,ဘာဖြစ်လို့လဲဆိုတော့ယခင်စုံစမ်းမှုသည်ရလဒ်ကိုလုံးဝလောင်ကျွမ်းသွားပြီဖြစ်သည်
}
အပေါ်ကပြထားတဲ့အတိုင်း Loop က အချက်အလက်အားလုံးကိုဖတ်ပြီးရလဒ်တစ်ခုလုံးကိုစားသုံးတယ်။ Loop သည်အချက်အလက်များကိုထပ်မံရယူရန်ကြိုးစား စဉ် ရလဒ်ကို "စားသုံး" နေပြီးဒေတာကိုမရနိုင်ပါ။
ဤအရာကိုရှောင်ရှားရန်အောက်ပါနည်းလမ်းများကိုကျွန်ုပ်တို့ယူနိုင်သည်။
ရလဒ်ကိုပြန်လည်ထူထောင်ရန်လိုအပ်ပါက 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) ခေါ်ဆိုခြင်းဖြင့်ဒေတာညွှန်ပြမှုကိုပြန်လည်စတင်နိုင်ပြီးရလဒ်အစတွင်ဒေတာကိုပြန်ဖတ်ရှုနိုင်သည်။
အချက်အလက်အားလုံးကိုတစ်ချိန်တည်းတွင်သင်ရလိုပါကအချက်အလက်အားလုံးကိုတစ်ပြိုင်နက်တည်းခင်းကျင်းခြင်းမပြုဘဲ ဤ စာမဖတ်ဘဲတစ်ပြိုင်တည်းခင်းကျင်းခြင်းမရှိဘဲ၎င်းကိုတစ်ပြိုင်တည်းခင်းကျင်းစေမည့် MySQLI_FETCHT_ALL () နည်းလမ်းကိုသုံးနိုင်သည်။ ဥပမာအားဖြင့်:
$result = $conn->query("SELECT * FROM users");
$rows = $result->fetch_all(MYSQLI_ASSOC);
// သင်ကအကြိမ်ပေါင်းများစွာသုံးနိုင်သည် $rows Array အတွက်ဒေတာ
foreach ($rows as $row) {
// အချက်အလက်များကိုထုတ်ယူခြင်း
}
ဤချဉ်းကပ်မှုသည်ရလဒ်အနေဖြင့်လိုင်းကိုလိုင်းဖတ်ပြီးရလဒ်များကိုအသုံးပြုသောအခြေအနေကိုရှောင်ရှားနိုင်ပြီးရလဒ်ကိုနေရာများစွာတွင်အသုံးပြုရန်ခွင့်ပြုသည်။
သင်၏ရှာဖွေမှုရလဒ်များသည်သေးငယ်သော်လည်းအချက်အလက်များကို array တစ်ခုတွင်သိမ်းဆည်းထားပြီးအချက်အလက်များကိုခင်းကျင်းစွာထည့်သွင်းစဉ်းစားနိုင်သည်။ ဥပမာအားဖြင့်:
$result = $conn->query("SELECT * FROM users");
$data = [];
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
// သင်ကအကြိမ်ပေါင်းများစွာသုံးနိုင်သည် $data အခင်းအကျင်း
foreach ($data as $row) {
// အချက်အလက်များကိုထုတ်ယူခြင်း
}
ဤနည်းလမ်းသည်ဒေတာဘေ့စ်၏ထပ်ခါတလဲလဲမေးမြန်းခြင်းကိုလည်းရှောင်ရှားနိုင်ပြီးရလဒ်ကို "စားသော" ဖြစ်သည့်ပြ the နာကိုလည်းရှောင်ရှားသည်။
သင် Fetch_ * နည်းလမ်းကိုအကြိမ်ပေါင်းများစွာခေါ်ဆိုသောအခါရလဒ်ကိုမျဉ်းကြောင်းဖြင့်မျဉ်းကြောင်းနှင့်စားသုံးသည်။ အကယ်. သင်သည်ရလဒ်ကိုဖြတ်သန်းလိုပါက MySQLI_DA_DA_DATA_SEEK () ကို ပြန်လည်သတ်မှတ်ရန် () ရလဒ်ကိုပြန်လည်သတ်မှတ်ခြင်းသို့မဟုတ် MySQLI_Fetch_All () ကိုသုံးရန်သို့မဟုတ် MySQLI_Fetch_All () ကို သုံးရန်သို့မဟုတ် MySQLI_Fetch_All ကို အသုံးပြု. MySQLI_DA_FETCE_ALL () ကိုအသုံးပြုသည်။ ဤနည်းလမ်းများမှတစ်ဆင့်ဖွံ့ဖြိုးရေးကာလအတွင်းကြုံတွေ့ရစဉ် "ရလဒ်အနေဖြင့်စားသုံး" ပြ problems နာများကိုရှောင်ရှားနိုင်ပြီးဒေတာများကိုမှန်ကန်စွာဖတ်ရန်သေချာစေနိုင်သည်။