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

MySQL_INFO မှအချက်အလက်များသည်အဘယ်ကြောင့်မတိကျဖြစ်သနည်း။ နောက်ကွယ်မှအကြောင်းရင်းများနှင့်ဖြေရှင်းနည်းများ

M66 2025-06-27

MySQL နှင့်ပါ 0 င်သော PHP ကိုအသုံးပြုသောအခါ developer အချို့က MySQL_INFO () သို့မဟုတ် MySQLI_INFO () သို့မဟုတ် MySQLI_INFO () ကို အသုံးပြု. MySQL_INFO () သို့မဟုတ် mySqli_info () ကို သုံး. ထုတ်ပြန်ချက်များကိုဖြည့်သွင်းခြင်းသို့မဟုတ်ဖျက်ခြင်းတို့ပြုလုပ်ပြီးနောက်ဖြည့်စွက်အချက်အလက်များကိုဖြည့်စွက်ပါ။ သို့သော်တစ်ခါတစ်ရံတွင်အချက်အလက်များပြန်အပ်သည့်အချက်အလက်များသည်အချို့သောစစ်ဆင်ရေးများအပြီးတွင် မှားယွင်းသော သို့မဟုတ်အချည်းနှီးသောကြိုးများကိုပင်ပြန်ပို့သည်ကိုသင်တွေ့ရှိနိုင်သည်။ ဤ "စိတ်မချရသော" အပြုအမူနှင့်အတူဘာတွေဖြစ်နေသလဲ။ ဤဆောင်းပါးသည်၎င်း၏လုပ်ငန်းနိယာမမှစတင်ပါလိမ့်မည်

1 ။ MySQL_INFO () ဘာလုပ်သလဲ။

MySQL_INFO () ကိုအဓိကအားဖြင့်ရွေးချယ်မှုမရှိသောထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်ပြီးနောက်ကွပ်မျက်မှုအခြေအနေကိုအကျဉ်းချုပ်ဖော်ပြရန်အဓိကအားဖြင့်အသုံးပြုသည်။

 $link = mysqli_connect("localhost", "user", "pass", "testdb");
mysqli_query($link, "UPDATE users SET status = 1 WHERE id < 100");
echo mysqli_info($link);

ပြန်လာသောအကြောင်းအရာဖြစ်နိုင်သည်

 Rows matched: 100 Changed: 100 Warnings: 0

ဤ output သတင်းအချက်အလက်သည်အသုတ်စစ်ဆင်ရေးများကို debugging လုပ်သည့်အခါဤသို့သောအတန်းမည်မျှကိုက်ညီသည်, သို့သော်၎င်းသည်အခြေခံ MySQL မှပြန်လာသောအခြေအနေသတင်းအချက်အလက်အပေါ်မူတည်သည်။

2 ။ တစ်ခါတစ်ရံတွင်တိကျသောတိကျမှုရှိသနည်း

1 ။ ထုတ်ပြန်ချက်များအားလုံးသည်အချက်အလက်အချက်အလက်များကိုပြန်ပို့လိမ့်မည်မဟုတ်ပါ

Non-Selection Non-Selections အားလုံးသည် အချက်အလက် အချက်အလက်များကိုထုတ်ဖော်ပြောဆိုခြင်းမဟုတ်ဘဲတရားဝင် MySQL စာရွက်စာတမ်းများကအောက်ဖော်ပြပါကြေငြာချက်အမျိုးအစားများသည်ဤအချက်အလက်များကိုသာပေးနိုင်သည်ဟုရှင်းလင်းစွာဖော်ပြထားသည်။

  • သို့ထည့်ပါ ... Select ...

  • နောက်ဆုံးသဘောပြု

  • ဖျက်

  • ဒေတာကို load

သာမန် ထည့်သွင်းခြင်း , အစားထိုးခြင်း စသည်တို့ကဲ့သို့ဖော်ပြချက်များအထူးသဖြင့်အချက်အလက်များကို sucqueries များမှတဆင့်အချက်အလက်များကိုမဖြည့်စွက်ပါ။

2 ။ client-driven အပြုအမူသက်ရောက်မှု

MySQL client စာကြည့်တိုက် (Libmysql သို့မဟုတ် MySQLND) PHP မှအသုံးပြုသော MySQLND) သည်အချက်အလက်များကိုဝယ်ယူခြင်းကိုအကျိုးသက်ရောက်လိမ့်မည်။ MySQLND (MySQL Native Driver Driver) ကိုအသုံးပြုသည့်အခါ MySQLI_INFO () မှ ပြန်လာသောအကြောင်းအရာသည်ပိုမိုယုံကြည်စိတ်ချရသည့်အကြောင်းအရာဖြစ်သည်။ အကယ်. ၎င်းသည် libmsql ဖြစ်လျှင်အချို့သောသတင်းအချက်အလက်များကိုမှတ်တမ်းတင်ခြင်းသို့မဟုတ်နှောင့်နှေးခြင်းမပြုရ။

3 ။ ထုတ်ပြန်ကြေငြာချက် Multi-statement execution ကို overwrite

SQL ထုတ်ပြန်ချက်များကိုဆက်သွယ်မှုတွင် (ဥပမာ, အသုတ်ထုတ်လုပ်ခြင်း) တွင် (ဥပမာ, အသုတ်ထုတ်လုပ်ခြင်း) တွင်ကွပ်မျက်ခံရပါက MySQLI_INFO () MySQLI_INFO () MySQLI_INFO () သည် နောက်ဆုံးကြေညာချက်၏အချက်အလက်အချက်အလက်များကိုသာပြန်ပို့သည်။ ဆိုလိုသည်မှာ

 mysqli_query($link, "UPDATE table1 SET name = 'A'; UPDATE table2 SET name = 'B';");
echo mysqli_info($link); // သာပြန်လာပါလိမ့်မယ် table2 ကွပ်မျက်သတင်းအချက်အလက်

၎င်းသည်များစွာသော developer များစွာသည်ယခင်စစ်ဆင်ရေးများကွပ်မျက်ခံရခြင်းသို့မဟုတ်အကျိုးသက်ရောက်မှုမရှိကြောင်းမှားယွင်းစွာယုံကြည်ကြသည်။

4 ။ MySQL configuration နှင့် version ကန့်သတ်ချက်များ

ကွဲပြားခြားနားသော MySQL ဆာဗာဗားရှင်းများသည်အချက်အလက်များအကြောင်းအရာများကိုပြန်လည်နေရာချထားရေးတွင်ကွဲပြားခြားနားမှုရှိသည်။ ဥပမာအားဖြင့်, အဟောင်းတွေ ဗားရှင်းကိုက်ညီ သို့မဟုတ် သတိပေးချက်များ ကိုရေတွက်။ မရပေမည်, ထို့အပြင်အချို့သောစွမ်းဆောင်ရည်အကောင်းဆုံးရွေးချယ်မှုများကိုဖွင့်ထားပါကအချို့သောစာရင်းအင်းဆိုင်ရာယုတ္တိဗေဒကိုကျော်သွားနိုင်သည်။

3 ။ မှန်ကန်စွာအသုံးပြုနည်းနှင့်လွဲမှားစွာရှောင်ရှားရန်?

1 ။ MySQLI နှင့် MYSQLND Drivers ကိုသုံးပါ

MySQLND driver ကို PHP ပတ်ဝန်းကျင်တွင်သေချာအောင်လုပ်ပါ။ အောက်မှာဖေါ်ပြတဲ့အတိုင်းအဲဒါကိုစစ်ဆေးနိုင်တယ်။

 if (function_exists('mysqli_get_client_stats')) {
    echo "mysqlnd enabled";
}

MySQLND သည်ပိုမိုပြည့်စုံပြီးစံသတ်မှတ်ထားသောအချက်အလက်အထောက်အပံ့များကိုပိုမိုကောင်းမွန်ပံ့ပိုးပေးသည်။ ၎င်းသည် Libmysql ထက်ထုတ်လုပ်မှုပတ် 0 န်းကျင်အတွက်ပိုမိုအကြံပြုသည်။

2 ။ ထုတ်ပြန်ချက်များစွာတွင်အချက်အလက်များကိုမှီခိုခြင်းကိုရှောင်ကြဉ်ပါ

ထုတ်ပြန်ချက်များစွာ (Multi_query) တွင်အချက်အလက်များပြန်လည် 0 င်ရောက်ခြင်းကိုအားမကိုးပါနှင့်။ ကြေငြာချက်တစ်ခုစီကိုသီးခြားစီကွပ်ကဲစစ်ဆေးသင့်ပြီးနောက်ဆက်တွဲဖော်ပြချက်များအနေဖြင့်၎င်းကိုပြန်လည်ရေးသားခြင်းမှကာကွယ်ခြင်းမှကာကွယ်ရန်ချက်ချင်းဖတ်သင့်သည်။

 mysqli_query($link, "DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY");
$logInfo = mysqli_info($link);
echo "log:" . $logInfo;

3 ။ Key Data ၏စာရင်းဇယား semantics အပေါ်အခြေခံပြီးသင်ကိုယ်တိုင်

အရေးကြီးသော SQL operations အချို့အတွက် MySQL_InFO () မှ ပြန်လာသောစာသားဖော်ပြချက်အပေါ်လုံးဝမမှီခိုနိုင်သော်လည်းစီးပွားရေးယုတ္တိဗေဒအပေါ် အခြေခံ. အပိုဆောင်းစုံစမ်းမှုသို့မဟုတ်သစ်ထုတ်လုပ်ခြင်းကိုပြုလုပ်ရန်၎င်းကိုအတည်ပြုရန်အကြံပြုသည်။ ဥပမာအားဖြင့်, Row Conser ကိုအရင်ကမအောင်မြင်မီနှင့်ပြီးဆုံးခြင်းကိုရှင်းလင်းပါ။

4 ။ လှည့်ပတ်နေသော Row Count Display ကိုရှောင်ပါ

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

4 ။ ကျွမ်းကျင်မှု debugging

Debug နှင့် Record ကိုပိုမိုထိရောက်စွာထုတ်လွှင့်နိုင်ရန်အတွက်အချက်အလက်အချက်အလက်များကိုအောက်ပါနည်းလမ်းများဖြင့် log in inter interface ကို log သို့မဟုတ်ပြသရန်ရေးသားနိုင်သည်။

 $sql = "UPDATE users SET status = 0 WHERE active = 0";
mysqli_query($link, $sql);
file_put_contents("/var/log/mysql_ops.log", date('Y-m-d H:i:s') . " " . $sql . " => " . mysqli_info($link) . "\n", FILE_APPEND);

ဤရွေ့ကားစစ်ဆင်ရေးမှတ်တမ်းများကိုဝေးလံခေါင်သီသောစောင့်ကြည့်လေ့လာရေးစနစ်သို့ interface မှတဆင့်ပေးပို့နိုင်ပါတယ်။