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

ဆက်သွယ်မှု () စုံစမ်းမှုသည်အောင်မြင်မှုရရသည့်အကြောင်းရင်းမှာအဘယ်ကြောင့်ဖြစ်ရသော်လည်း

M66 2025-05-24

PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဤအခြေအနေကိုကျွန်ုပ်တို့မကြာခဏကြုံတွေ့ရလေ့ရှိသည် - ဒေတာဘေ့စ်ကိုအောင်မြင်စွာချိတ်ဆက်နိုင်ရန်အတွက် MySQLI_Connect () သို့မဟုတ် PDO ကို အသုံးပြု. SQL Queries များနှင့်ပရိုဂရမ်များအနေဖြင့်မှားယွင်းခြင်း, ဤပြ problem နာသည်ပထမတစ်ချက်တွင်ဒေတာဘေ့စ်ဆက်သွယ်မှုများနှင့်ပြ a နာတစ်ခုနှင့်တူသည်။ သို့သော်အကြောင်းပြချက်သည်အမှန်တကယ်တွင်အလွန်ရှုပ်ထွေးနိုင်သည်။ ဤဆောင်းပါးသည်ဤဖြစ်စဉ်၏ဖြစ်နိုင်ချေရှိသောအကြောင်းရင်းများကိုတစ် ဦး အားခွဲခြမ်းစိတ်ဖြာရန်နှင့်သက်ဆိုင်သောဖြေရှင်းနည်းများကိုပေးရန်သင့်အားယူပါလိမ့်မည်။

1 ။ အောင်မြင်သောဆက်သွယ်မှုသည်အရာရာတိုင်းပုံမှန်ဖြစ်သည်ဟုမဆိုလိုပါ

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

အထက်ပါကုဒ်သည် "Connection အောင်မြင်မှု" ကိုအောင်မြင်စွာထုတ်ယူနိုင်သော်လည်းသင်၏နောက်ဆက်တွဲစုံစမ်းမှုစစ်ဆင်ရေးသည်မှားယွင်းသွားလိမ့်မည်ဟုမဆိုလိုပါ။ အောင်မြင်သောဒေတာဘေ့စ်ဆက်သွယ်မှုသည်ဆက်သွယ်ရေးလမ်းကြောင်းတစ်ခုတည်းကိုသာထူထောင်နိုင်သည်။ သို့သော်ဤလမ်းကြောင်းသည်တိကျသော SQL operations များကိုကိုင်တွယ်နိုင်သလား။

2 ။ မစုံစမ်းရန်ပျက်ကွက်မှုအတွက်ဘုံအကြောင်းပြချက်

1 ။ SQL syntax အမှား

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

 $sql = "SELEC * FROM users"; // မှားသော့ချက်စာလုံးများ SELEC
$result = $mysqli->query($sql);
if (!$result) {
    echo "စုံစမ်းမှုမအောင်မြင်ပါ: " . $mysqli->error;
}

ဖြေရှင်းချက် - အမှားအယွင်းများကို ကြည့်ရှုရန်အမှားအယွင်းများကိုကြည့်ရှုရန်အမှားအယွင်းများကိုကြည့်ရှုရန်နှင့် SQL ကြေငြာချက်မှန်ကန်စွာမှန်ကန်စွာစစ်ဆေးသည်ကိုဂရုတစိုက်စစ်ဆေးပါ။

2 ။ ဒေတာဘေ့စ်ခွင့်ပြုချက်မလုံလောက်ပါ

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

 // အသုံးပြုသူမှာစားပွဲပေါ်မှာမရှိပါ SELECT ခွင့်ပြုချက်
$sql = "SELECT * FROM admin_logs";
$result = $mysqli->query($sql);
if (!$result) {
    echo "ခွင့်ပြုချက်问题: " . $mysqli->error;
}

ဖြေရှင်းချက် - ဒေတာဘေ့စ်အသုံးပြုသူ၏ခွင့်ပြုချက်များကိုစစ်ဆေးပြီးအောက်ပါ command ကိုသုံးပါ။

 SHOW GRANTS FOR 'user'@'localhost';

လိုအပ်ပါကခွင့်ပြုချက်ကိုသက်ဝင်စေရန် DBA ကိုဆက်သွယ်ပါ။

3 ။ ဒေတာဘေ့စ်သို့မဟုတ်စားပွဲပေါ်မှာမတည်ရှိပါဘူး

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

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

ဖြေရှင်းချက် - စားပွဲတည်ရှိမှုရှိမရှိအတည်ပြုရန်အောက်ပါဖော်ပြချက်ကိုသုံးနိုင်သည်။

 SHOW TABLES LIKE 'nonexistent_table';

4 ။ ဇာတ်ကောင်မတိုက်ဆိုင် set

မလျော်ကန်သောဇာတ်ကောင် setting settings သည်တရုတ်သို့မဟုတ်အထူးအက္ခရာများကိုဖြည့်စွက်ရန်တရုတ်သို့မဟုတ်အထူးအက္ခရာများကိုကျရှုံးစေနိုင်သည်။

 $mysqli->set_charset("utf8mb4"); // လက်ျာဇာတ်ကောင်အစုံကိုအသုံးပြုရန်သေချာအောင်လုပ်ပါ

ဖြေရှင်းချက် - client, connection and database ကိုဇာတ်ကောင်သတ်မှတ်ချိန်တွင်တသမတ်တည်းထားပါ။

5 ။ parameters တွေကိုမှန်မှန်ကန်ကန်ခညျြနှောငျမထားပေ။

Preprocessing ထုတ်ပြန်ချက်များကိုအသုံးပြုသည့်အခါ parameters တွေကိုမှန်ကန်စွာချည်နှောင်ထားခြင်းမရှိပါက Execution ပျက်ကွက်လိမ့်မည်။

 $stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("s", $id); // မမှန်ကန်သောဒေတာအမျိုးအစားသို့မဟုတ် unassigned parameter သည်
$id = 123;
$stmt->execute();

အဆင်ဖရဲရောဂါ - parameters တွေကိုမဖြည့်ခင်မှာ variable ကိုမှန်ကန်စွာစတင်သေချာအောင်လုပ်ပါ။

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

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

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

3 ။

အသေးစိတ်အမှားအစီရင်ခံစာကိုဖွင့်ပါ

 mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

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

သစ်ထုတ်လုပ်ရေးအမှားကိုသုံးပါ

 file_put_contents("log.txt", $mysqli->error . "\n", FILE_APPEND);

အကြိမ်ရေနှင့်စည်းမျဉ်းစည်းကမ်းများကိုဆန်းစစ်ခြင်းကိုလွယ်ကူချောမွေ့စေရန်အတွက်အမှားတိုင်းကိုမှတ်တမ်းတင်ပါ။

တောင်းဆိုမှုများကိုရှာဖွေရန် packet ကိုဖမ်းယူကိရိယာကိုသုံးပါ

သင်၏မေးမြန်းမှုတွင် URL တောင်းဆိုမှုပါ 0 င်ပါက,

 $url = "https://api.m66.net/getData.php";
$data = file_get_contents($url);

URL သည်လက်လှမ်းမီကြောင်းသေချာပါစေ, ပြန်လာသောအကြောင်းအရာသည်မှန်ကန်ပြီး redirect သို့မဟုတ် 403 အမှားမဟုတ်ပါ။

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

အောင်မြင်သော ဆက်သွယ်မှု () သည်ဒေတာဘေ့စ်ဆက်သွယ်မှုသည်ပုံမှန်ဖြစ်သော်လည်း "ပုံမှန် connection" သည် "အောင်မြင်သောစစ်ဆင်ရေး" ကိုမဆိုလိုပါ။ စုံစမ်းမှုပျက်ကွက်မှု၏အဓိကအကြောင်းရင်းမှာမကြာခဏခွင့်ပြုချက်များ, syntax, စားပွဲတင်ဖွဲ့စည်းပုံ, အမှားအချက်အလက်များကိုစနစ်တကျစစ်ဆေးခြင်းအားဖြင့်အမှားအယွင်းများကိုဖွင့်ခြင်းအားဖြင့်အစီရင်ခံစာများကိုဖွင့်ခြင်း,

မှတ်မိရန်အရေးကြီးသည် - ဆက်သွယ်မှုသည်အစမှတ်ရုံနှင့် Query သည်သော့ချက်ဖြစ်သည်။