စတင်ခြင်းမပြုမီ () , ဆက်သွယ်မှုမအောင်မြင်ပါကငွေပေးငွေယူနှင့်သက်ဆိုင်သောနည်းလမ်းကိုခေါ်ဆိုခြင်းအမှားတစ်ခုချလိမ့်မည်။ ဥပမာအားဖြင့်:
<Code> $ MySQLI = MySQLI ('localhost', 'userhost', 'Password', 'Database', IF ($ mySQli-> connect_error) {
သေဆုံး
}
$ MySQLI-> စတင်ရန် (); // ဆက်သွယ်မှုပျက်ကွက်ပါကဤမျဉ်းကြောင်းအမှားတစ်ခုသတင်းပို့လိမ့်မည်
</ code>
ငွေပေးချေမှုနည်းလမ်းကိုမခေါ်မီ connection detection ယုတ္တိဗေဒကိုထည့်သွင်းရန်နှင့်နောက်ဆက်တွဲပြ troubl နာဖြေရှင်းခြင်းအတွက်အမှားအချက်အလက်များကိုစနစ်တကျမှတ်တမ်းတင်ရန်အကြံပြုသည်။
ဒေတာဘေ့စ်အသုံးပြုသူသည်အရောင်းအ 0 ယ်များကို enable လုပ်ရန်ခွင့်ပြုချက်ရှိကြောင်းသေချာပါစေ။ အချို့သော shared hosts သို့မဟုတ်ဒေတာဘေ့စ်အကောင့်များအကန့်အသတ်ဖြင့်ခွင့်ပြုချက်များဖြင့်အကန့်အသတ်ဖြင့်သာပြုလုပ်နိုင်သည်။
<code> // ဥပမာ - လက်ရှိအသုံးပြုသူခွင့်ပြုချက်ကို Query $ ရလဒ် = $ MySQLI-> Query ("current_user ()" ") စဉ် ($ Row = $ ရလဒ် -> finch_row ()) {echo $ အတန်း [0] ။ "\ n"; } </ code>စတင်ငွေပေးငွေယူ သို့မဟုတ် အခွင့်ထူးများအားလုံး ထောက်ပံ့ကြေး ခွင့်ပြုချက်တွင်မပါ 0 င်ကြောင်းသင်တွေ့ရှိပါကလက်ရှိအကောင့်ခွင့်ပြုချက်သည်အကန့်အသတ်ရှိသည်ဟုဆိုလိုသည်။
Innodb အင်ဂျင်ကို သုံး. MySQL တွင်သာစားပွဲများကိုသာထောက်ပံ့သည်။ အကယ်. သင်သည် Myisam Table တွင်ငွေပေးငွေယူကိုဖွင့်ရန်သင်ကြိုးစားပါက၎င်းသည်အကျိုးသက်ရောက်ခြင်းနှင့်အမှားတစ်ခုဖြစ်နိုင်သည်။
<code> // check table engine $ ရလဒ် = $ MySQLI-> Query ("အမည် = 'your_table'"), $ Row = $ ရလဒ် -> Fetch_assoc (), ECHO ၏အင်ဂျင်အမျိုးအစား: '။ $ အတန်း ['အင်ဂျင်'; </ code>အကယ်. output သည် Myisam ဖြစ်ပါကဇယားဖွဲ့စည်းပုံကိုပြုပြင်ရန်နှင့်အင်ဂျင်ကို Innodb သို့ပြောင်းလဲရန်လိုအပ်သည်။
<code> table ကို table ကို alter_table engine = innodb; </ code>MySQLI :: InstrumTransaction () သည် အလိုအလျောက်တင်သွင်းမှုကိုပိတ်ထားရန်ဖြစ်သည်။ အကယ်. လက်ရှိဆက်သွယ်မှုကိုအလိုအလျောက်ကျူးလွန်သော mode သို့သတ်မှတ်ပြီးပါကအချို့သောဒေတာဘေ့စ် configurations များသည်ဤအပြုအမူကို overwriting ခွင့်ပြုမည်မဟုတ်ပါ,
<code> // သည် Auto-MySQLI-> Autocommit (FalseMIT) ကိုရှင်းလင်းစွာပိတ်ထားသည်။ // ငွေပေးငွေယူတစ်ခုစတင်ပါ
$ MySQLI-> စတင်ရန် ();
</ code>
MySQL ဆာဗာများ (ဥပမာ 5.5 သို့မဟုတ်အောက်တွင်ဖော်ပြထားသော) အချို့သောအဟောင်းများအဟောင်းများ (ဥပမာ - fallemit) ကိုတိကျစွာဖွဲ့စည်းခြင်းနှင့်သက်ဆိုင်သော parameters များ ( acocommit ကဲ့သို့သော) ဒေတာဘေ့စ်ဗားရှင်းနှင့် configuration files များရှိ settings ကိုအတည်ပြုနိုင်သည်။
ကြိုးစားကြည့်ပါ ... ဖမ်းမိခြင်း နှင့် mysqli_sql_sql_sql_exception သင်တန်းများကိုပိုမိုကောင်းမွန်သောဖမ်းယူခြင်းနှင့်အမှားအယွင်းများကိုရှာဖွေရန်။
<Code> MySQLI_REPORE (MySQLI_REPORD_ERROR | MySQLI_REPORT_STRET); ကြိုးစားကြည့်ပါ
$ MySQLI = MYSQLI ('localhost', 'userhost', 'Password', 'Database',
$ MySQLI-> စတင်ရန် ();
// ငွေပေးချေမှုစစ်ဆင်ရေး
$ mysqli-> ကျူးလွန် ();
} ဖမ်း (MySQLI_SQL_ESSQL_Exception $ E) {
ECHO 'ငွေပေးငွေယူအမှား:' ။ $ e-> gettessage ();
$ mysqli-> Rollback ();
}
</ code>
ဤနည်းလမ်းသည် developer များကဆက်သွယ်မှုအချိန်ကုန်များ, ကွန်ယက်အမှားများ,
Connection Error error error mySQL server သို့မဟုတ် Query အတွင်းဆက်သွယ်မှုပျောက်ဆုံးခြင်းကို မဆက်သွယ်နိုင် ပါကအောက်ပါကွန်ယက်ဖွဲ့စည်းမှုကိုစစ်ဆေးရန်အကြံပြုပါသည်။
အိမ်ရှင်အမည်မှန်ကန်မှု (ဥပမာ localhost vs 127.0.0.1.1 ),
Firewall သည် Port 3306 ဆက်သွယ်ရေးကိုခွင့်ပြုသည်ဖြစ်စေ,
ဒေတာဘေ့စ်ဆာဗာလည်ပတ်နေသလား,
ဆက်သွယ်မှု ကန့်သတ်ချက်ရှိ,
Ping , Telnet သို့မဟုတ် Dabeabase Clients ကဲ့သို့သောကိရိယာများကိုအသုံးပြုခြင်းသည် Ping, Telnet သို့မဟုတ် Deblql Workbeenbench ကဲ့သို့သောကိရိယာများကို အသုံးပြု. ဆက်သွယ်မှုကိုစမ်းသပ်ခြင်းသည်ပြ problems နာများကိုလျင်မြန်စွာအတည်ပြုနိုင်သည်။
<code> Telnet Gitbox.net 3306 </ code>နောက်ဆုံးအနေဖြင့်အထက်ဖော်ပြပါနည်းလမ်းများသည်ပြ problem နာကိုရှာမတွေ့နိုင်ပါက MySQL အမှားမှတ်တမ်းနှင့် PHP အမှားမှတ်တမ်းကိုကြည့်နိုင်သည်။
MySQL မှတ်တမ်းလမ်းကြောင်း (များသောအားဖြင့် /var/log/mysqlqlqlqlqlqlqlqlql.log တွင်သို့မဟုတ် configuration file တွင်) တွင်ဖော်ပြထားသည်);
PHP အမှားမှတ်တမ်းလမ်းကြောင်း ( php.ini ၏ error_log configurations မှတဆင့်ကြည့်ရှုနိုင်ပါသည်);
Error 2002 ကဲ့သို့သောသော့ချက်စာလုံးများကိုရှာဖွေခြင်း, အမှား 1045 , အမှား 2013 အမှား 2013 အမှားသည်ပြ the နာကိုလျင်မြန်စွာသော့ခတ်နိုင်သည်။