လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> FETC_AST_AST_ASSOC () null analysis ကိုပြန်ပို့သည်

FETC_AST_AST_ASSOC () null analysis ကိုပြန်ပို့သည်

M66 2025-05-28

MySQLI extension ကို အသုံးပြု. PHP ရှိဒေတာဘေ့စ်သို့ချိတ်ဆက်ရန် MySQLI_RESURT OFF of MySQLI_RESURT OFF of the MySQLI_RESELT အရာဝတ်ထု၏နောက်လာမည့်မှတ်တမ်းများကိုရရှိရန်အသုံးပြုသည်။ ဤနည်းလမ်းသည်တွဲဖက်အမည်ကိုသော့အမည်နှင့်သက်ဆိုင်ရာအချက်အလက်များနှင့်သက်ဆိုင်သောအချက်အလက်များအဖြစ်ပါ 0 င်သော Associative ခင်းကျင်းမှုကိုပြန်လည်ရရှိစေသည်။ ပြန်လာရန်မှတ်တမ်းများမရှိတော့ပါက FETC_AsSOC () သည် NULL REVERY ။ သို့သော် developer များစွာသည်အသုံးပြုနေစဉ်အတွင်းပြ a နာတစ်ခု နှင့် ကြုံတွေ့ရလိမ့်မည်။ ဤဆောင်းပါးသည်ဤပြ problem နာ၏အကြောင်းရင်းများကိုစူးစမ်းလေ့လာပြီးဖြေရှင်းနည်းများပေးလိမ့်မည်။

1 ။ ပြ problem နာခွဲခြမ်းစိတ်ဖြာ

Fetch_AssoC () ကို MySQLI_RESELT ကို ပြန်ပို့ရန် MySQLI_RESULE ကို ပြန်လည်ခေါ်ယူခြင်းသည်ဖြစ်နိုင်ချေရှိသောအကြောင်းပြချက်များစွာရှိသည်။

1.1 ။ အဆိုပါစုံစမ်းမှုရလဒ်မရှိပါ

အသုံးအများဆုံးဖြစ်ရပ်မှာကွပ်မျက်ခံရသည့်စုံစမ်းမှုသည်မည်သည့်အချက်အလက်မဆိုပြန်ပို့ခြင်းမဟုတ်ပါ။ ဥပမာအားဖြင့်, အကယ်. သင်သည် Select Selection ကို execute လုပ်ပါကဒေတာဘေ့စ တွင်မှတ်တမ်းမရှိပါ ၎င်းသည်အမှားတစ်ခုမဟုတ်ပါ, သို့သော်ပုံမှန်အပြုအမူတစ်ခုမှာမူပြန်ဆိုရန်အချက်အလက်များမရှိတော့ကြောင်းညွှန်ပြသည်။

 $query = "SELECT * FROM users WHERE id = 10";  // ယူဆချက် id = 10 မတည်ရှိပါဘူး
$result = $mysqli->query($query);

$row = $result->fetch_assoc();
if ($row === null) {
    echo "မှတ်တမ်းမရှိပါ!";
}

1.2 ။ စုံစမ်းမှုကြေညာချက်တွင်အမှားတစ်ခုရှိသည်

SQL query strespution တွင်အမှားတစ်ခုရှိပါက MySQLI_QUERY () သည် မှားယွင်းသော နောက်သို့ ပြန်ပို့လိမ့်မည်။ အကယ်. သင်ကရှာဖွေမှုရလဒ်ကိုအောင်မြင်စွာကွပ်မျက်ခံရခြင်းရှိမရှိကိုသင်မစစ်ဆေးပါကစုံစမ်းမှုကွပ်မျက်သည်အောင်မြင်သည်ဟုသင်မှားယွင်းစွာထင်ကောင်းထင်လိမ့်မည်။

 $query = "SELEC * FROM users WHERE id = 10";  // SQL Syntax အမှား
$result = $mysqli->query($query);

if ($result === false) {
    echo "စုံစမ်းမှုမအောင်မြင်ပါ: " . $mysqli->error;
}

1.3 ။ ရလဒ်အားလုံးထုတ်ယူခဲ့ကြသည်

ရလဒ်အပြည့်အဝထုတ်ယူထားသည့်အချက်အလက်များကိုလုံးဝထုတ်ယူခဲ့ပါက Fetch_AssoC () ကိုခေါ်သည့်အခါနောက်ဆက်တွဲ fetch_assoc () ခေါ်ဆိုမှုများသည် Null ပြန်လာမည်, ဆိုလိုသည်မှာ Qualth သည်ပြန်လည်ပေးပို့ရန်နောက်ထပ်အချက်အလက်များမရှိသေးပါ။

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

while ($row = $result->fetch_assoc()) {
    echo $row['name'] . "<br>";
}

// ဒီမှာနောက်တဖန်ခေါ် fetch_assoc() ပြန်လာပါလိမ့်မယ် null
$row = $result->fetch_assoc();
if ($row === null) {
    echo "ဒေတာမရှိတော့ပါ!";
}

1.4 ။ ဒေတာဘေ့စ်ဆက်သွယ်မှုသို့မဟုတ်မေးမြန်းမှုအတွင်းအခြားအမှားများဖြစ်ပွားခဲ့သည်

အကယ်. စုံစမ်းမှုစဉ်အတွင်းဒေတာဘေ့စ်ဆက်သွယ်မှုအမှားတစ်ခုသို့မဟုတ်အခြားပြ problem နာတစ်ခုဖြစ်ပါ က MySQLI_RESULT OFF သည်အချက်အလက်များကိုမှန်ကန်စွာပြန်ပို့မည်မဟုတ်ပါ။ ဤအချိန်တွင် MySQLI ၏အမှားအယွင်းကိုစစ်ဆေးခြင်းအားဖြင့်ပြ the နာကို debug လုပ်ပြီးဖြေရှင်းနိုင်သည်။

 $mysqli = new mysqli('localhost', 'root', 'password', 'database');
if ($mysqli->connect_error) {
    die('ဆက်သွယ်မှုမအောင်မြင်ပါ: ' . $mysqli->connect_error);
}

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

if ($result === false) {
    echo "စုံစမ်းမှုမအောင်မြင်ပါ: " . $mysqli->error;
}

2 ။ ဖြေရှင်းနည်း

2.1 ။ ရှာဖွေမှုရလဒ်များကိုစစ်ဆေးပါ

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

 $query = "SELECT * FROM users WHERE id = 10";
$result = $mysqli->query($query);

if ($result === false) {
    echo "စုံစမ်းမှုမအောင်မြင်ပါ: " . $mysqli->error;
} else {
    $row = $result->fetch_assoc();
    if ($row) {
        echo "မှတ်တမ်းကိုရှာပါ: " . $row['name'];
    } else {
        echo "မှတ်တမ်းမရှိပါ!";
    }
}

2.2 ။ SQL ထုတ်ပြန်ချက်များ၏မှန်ကန်မှုကိုစစ်ဆေးပါ

SQL ကြေငြာချက်သည်အမှားအယွင်းများကိုသေချာအောင်လုပ်ပါ။ အသေးစိတ်အမှားအချက်အလက်များကို MySQLI_ERRORRORR () သို့မဟုတ် mySQli_errno () လုပ်ဆောင်ချက်များကို အသုံးပြု. ရယူနိုင်သည်။

 $query = "SELECT * FROM users WHERE id = 10";
$result = $mysqli->query($query);

if ($result === false) {
    echo "စုံစမ်းမှုမအောင်မြင်ပါ: " . $mysqli->error;
}

2.3 ။ ဆက်သွယ်မှုပုံမှန်ဖြစ်ပါတယ်သေချာပါစေ

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

 $mysqli = new mysqli('localhost', 'root', 'password', 'database');
if ($mysqli->connect_error) {
    die('ဆက်သွယ်မှုမအောင်မြင်ပါ: ' . $mysqli->connect_error);
}

2.4 ။ ဆုတ်ခြာ

debugging လုပ်ငန်းစဉ်အတွင်း Var_Dump () သို့မဟုတ် print_r () furctions များကဲ့သို့သောလုပ်ဆောင်မှုများကိုသင်ပြန်လာသည့်ရလဒ်များကိုစစ်ဆေးရန်ရလဒ်ပါ 0 င်သည့်အကြောင်းအရာများကိုထုတ်လွှင့်ရန်။

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

var_dump($result);  // စုံစမ်းမှုရလဒ်အရာဝတ်ထုကိုစစ်ဆေးပါ

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

MySQLI_RESELTMySQLI_RESELT ၏ MySQLI_RESELT ၏နည်းလမ်းသည်မမှားပါ။ Null ပြန်လာရန်မမှားပါ။ ဤအပြုအမူသည် SQL သည်မှန်ကန်စွာကွပ်မျက်ခံရသည်ဖြစ်စေ, ဒေတာဘေ့စ်ဆက်သွယ်မှုသည်ပုံမှန်ဖြစ်စေ, ဤဆောင်းပါးတွင်ခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ဖြေရှင်းနည်းများသည်ဤပြ problem နာကိုပိုမိုနားလည်သဘောပေါက်ရန်နှင့်ဖြေရှင်းနိုင်ရန်ကူညီနိုင်သည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။