လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PDO နှင့် MySQLI :: $ connect_Error အကြားပြောင်းသည့်အခါသင်ဘာကိုဂရုပြုသင့်သနည်း။

PDO နှင့် MySQLI :: $ connect_Error အကြားပြောင်းသည့်အခါသင်ဘာကိုဂရုပြုသင့်သနည်း။

gitbox 2025-05-26

1 ။ PDO နှင့် MySQLI ဆက်သွယ်မှုအမှားများအကြားမရှိမဖြစ်ကွဲပြားခြားနားသောခြားနားချက်

  • : အငြင်းပွားမှုယန္တရားမှတစ်ဆင့်ဆက်သွယ်မှုနှင့် query rights များကိုသတင်းပို့ပါ ( PoCoException ) Try Catch ကို အသုံးပြု. ကုဒ်ကိုဖမ်းယူနိုင်ပြီးခြွင်းချက်အချက်အလက်များတွင်အသေးစိတ်အချက်အလက်ဖော်ပြချက်များပါ 0 င်သည်။

  • MySQLI - ပစ္စည်းအမှားများကိုအစီရင်ခံရန် $ MySQLI-> Connection_Eronor -Encover_errino ကဲ့သို့သောဂုဏ်သတ္တိများနှင့်နည်းလမ်းများကိုသုံးပါ။ အမှားအယွင်းများသည်ခြွင်းချက်များကိုအလိုအလျောက်မချနိုင်ပါ။ တက်ကြွစွာရှာဖွေတွေ့ရှိရန်လိုအပ်သည်။

တနည်းအားဖြင့် PDO သည်ခြွင်းချက်ယန္တရားများပိုမိုများပြားသည်။

2 ။ MySQL ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန်အတွက်အခြေခံကုဒ်များကိုနှိုင်းယှဉ်ခြင်း

PDO ဆက်သွယ်မှုဥပမာ

 try {
    $pdo = new PDO('mysql:host=gitbox.net;dbname=testdb;charset=utf8', 'username', 'password');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "အောင်မြင်စွာဆက်သွယ်မှု";
} catch (PDOException $e) {
    echo "ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $e->getMessage();
}

MySQLI ဆက်သွယ်မှုဥပမာ

 $mysqli = new mysqli('gitbox.net', 'username', 'password', 'testdb');
if ($mysqli->connect_error) {
    die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
echo "အောင်မြင်စွာဆက်သွယ်မှု";

မှတ်စု: MySQLI သည် Connection Error Message ကို $ MySQLI-Getect_Error မှတစ်ဆင့်ရရှိသည်။ ခြွင်းချက်များကိုအလိုအလျောက်မပစ်နိုင်ပါ။

3 ။ PDO မှ MySQLI :: $ connect_Error သို့ပြောင်းသည့်အခါကျော့ကွင်းများကိုဂရုပြုရန်

1 ။ အမှားကိုင်တွယ်ပြောင်းလဲခြင်း

  • PDO သည် ခြွင်းချက်များကိုအသုံးပြုသည်။ ကုဒ်ဖွဲ့စည်းပုံသည်ရိုးရှင်းလွယ်ကူပြီးပိုမိုလုံခြုံသည်။

  • MySQLI သည် MySQLI-Getection_ERRORE- GECTIONKLI-> Connect_errino ကို အတိအကျအကဲဖြတ်ရန်လိုအပ်သည်။

သင် ကြိုးစားရန်အသုံးပြုသည်ဆိုပါက,

2 ။ settings ကို coding

PDO သည် Charset = UTF8 ကဲ့သို့သော DSN ဆက်သွယ်မှု string ကိုသတ်မှတ်ထားသည့်ဇာတ်ကောင်ကိုတိုက်ရိုက်သတ်မှတ်သည်။

 $mysqli->set_charset('utf8');

ဒီလိုမှမဟုတ်ရင်တရုတ်ရှို့ carbled code နဲ့ပြ problems နာတွေရှိလိမ့်မယ်။

3 ။ ဆက်သွယ်မှု options များခြားနားချက်

PDO သည် connection options များစွာကိုထောက်ပံ့သည်။ MySQLI သည်အချို့သောရွေးချယ်စရာများကိုထောက်ပံ့သည်။ ဥပမာအားဖြင့်:

  • PDO ကို PDO :: Attr_Persistent ဖြင့်ဖွင့်နိုင်သည်။

  • MySQLI သည် ထပ်မံ. ဆက်လုပ်ရန်သို့မဟုတ်မြဲမြဲချိတ်ဆက်မှုများကိုဖွင့်ရန်နည်းလမ်းအမျိုးမျိုးသုံးရန်လိုအပ်သည်။

4 ။ ကြေညာချက်များကွဲပြားခြားနားမှု

  • PDO POPOCESSING ကြေငြာချက် $ stmt = $ pdo-> ပြင်ဆင် ($ sql) ကိုအသုံးပြုသည်။ အမည်ရှိ parameter သည် binding ကိုထောကျပံ့ရန်။

  • MySQLI Preprocessing Statement သည် $ stmt = $ MySQLi-> ပြင်ဆင်ခြင်း ($ sql) ကိုအသုံးပြုသည်။ မေးခွန်းများသာ Mark placeholders များကိုသာထောက်ပံ့သည်။

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

5 ။ ခြွင်းချက်ဖမ်းယူအသေးစိတ်

MySQLI သည်ပုံမှန်အားဖြင့်ခြွင်းချက်များကိုမပစ်ပါ။ PDO ၏ခြွင်းချက်ကိုဖမ်းယူလိုပါက MySQLI ခြွင်းချက်ပစ် function ကို enable လုပ်နိုင်သည်။

 mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

ဖွင့်လှစ်ပြီးနောက် MySQLI သည် MySQLI_SQL_Exception ကို ပစ်ချလိမ့်မည်။

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

အကြံအစည် ပန်ကေ MySQLI
အမှားကိုင်တွယ် ခြွင်းချက်ဖမ်း (ကြိုးစားကြည့်ပါ) ပြင်ပမှခြွင်းချက်များကို enable လုပ်ရန် $ CONECT_ERRORE ကို စစ်ဆေးပါ
ချိတ်ဆက်မှု string ကိုပုံစံ DSN string ကို (charset ကိုသတ်မှတ်နိုင်သည်) charset ကိုသီးခြားစီသတ်မှတ်ပါ, set_charet () ကို ခေါ်ရန်လိုအပ်သည်။
pourrocessing parameter သည် binding support support parameters တွေကိုကူညီပါ မေးခွန်းများသာ Mark Placeholders ကိုသာထောက်ပံ့သည်
မြဲဆက်သွယ်မှုအထောက်အပံ့ ရွေးချယ်စရာများအားဖြင့်သတ်မှတ် အကောင်အထည်ဖော်ရန်မတူညီသောနည်းလမ်းများလိုအပ်သည်

အတိုချုပ်ပြောရလျှင် PDO မှ MySqli သို့ပြောင်းခြင်းသည်အစားထိုး connection method တစ်ခုသာမကအမှားကိုင်တွယ်ခြင်း, encoding settings, precoding settings, preprocessing settings, preprocessing statements စသဖြင့်စဉ်းစားရန်လည်းစဉ်းစားသည်။